jquery
  • internet-explorer
  • 2012-12-11 21 views 0 likes 
    0

    更新:好的,我需要被拍攝。我遺漏了一些表格代碼來減少帖子的長度。下面是完整的代碼:當輸入位於表格內時,JQuery序列化與Internet Explorer中的輸入不起作用

    <form name="userupdate" id="userupdate" method="post"> 
    <input type='hidden' name='username' id='username' value='andyd273' /> 
    <input type='hidden' name='setusertype' id='setusertype' value='1' /> 
    <table align="left" border="1" cellspacing="0" cellpadding="3" class="bodytext"> 
    <tr><td>andyd273</td></tr> 
    <tr><td> 
    <input type='checkbox' name='DealerType[]' id='GM' value='1' /> GM<br> 
    <input type='checkbox' name='DealerType[]' id='Chrysler' value='2' /> Chrysler<br> 
    <input type='checkbox' name='DealerType[]' id='Ford' value='3' /> Ford<br> 
    </td></tr> 
    </table><br> 
    <input type='button' value='Save' onclick='javascript: formSubmit();' /> 
    </form> 
    

    我想我會嘗試一些東西,並取消了東西,只是讓普通形式輸入,複選框開始工作,就像他們在Chrome瀏覽器執行。

    因此,新的問題:當輸入在表格內部時,爲什麼不在IE中序列化工作? 感謝大家試圖幫助解決第一個不完整的問題!留給完整性

    老問題:

    我試圖讓一個形式連載。它適用於Chrome和Firefox,但不適用於Internet Explorer。
    例子:

    <input type='hidden' name='username' id='username' value='andyd273'> 
    <input type='hidden' name='setusertype' id='setusertype' value='1'> 
    <input type='checkbox' name='DealerType[]' id='GM' value='1' /> GM<br> 
    <input type='checkbox' name='DealerType[]' id='Chrysler' value='2' /> Chrysler<br> 
    <input type='checkbox' name='DealerType[]' id='Ford' value='3' /> Ford<br> 
    

    在Chrome中我得到:

    Array 
    (
        [username] => andyd273 
        [setusertype] => 1 
        [DealerType] => Array 
         (
          [0] => 1 
          [1] => 3 
         ) 
    
    ) 
    

    ,但在IE我只得到:

    Array 
    (
        [username] => andyd273 
        [setusertype] => 1 
    ) 
    

    所以我不知道需要用它做什麼使其在IE中工作。

    /老問題

    +0

    您是否嘗試過使用複選框的不同名稱屬性?具體來說,一個沒有大括號?我自己捅了一下,但我現在沒有我的IE VM。 – Carl

    +0

    爲了測試,我將它改爲DealerType1,DealerType2,DealerType3而不是大括號,它仍然只發送兩個隱藏的輸入。很奇怪。 – AndyD273

    +0

    啊,隨着更新,答案很簡單(如果傷心)。在表格中嵌套輸入元素不是合法的HTML。 – Carl

    回答

    1

    jQuery的序列化不包括未經檢查的複選框。

    看看這個小提琴:

    http://jsfiddle.net/UGaEp/3/

    您可以找到以下問題更多:

    jQuery serialize does not register checkboxes

    忽略的代碼,不會讓我張貼的答案。

    $('#test').on('click', '#submit', validate); 
    
    function validate() { 
        var data = $('#test').serialize(); 
        console.log(data); 
    }​ 
    
    +0

    我確實沒有包括未經檢查的複選框。我其實只關心被檢查的人。它現在在非IE中工作。 – AndyD273

    +0

    我不明白你的意思是「在非IE工作」上面的例子應該在ie中工作。我更新了小提琴而不是console.logs。 –

    +0

    你是對的,它應該像輸入一樣工作。不幸的是我留下了一點點。我很抱歉。查看更新的問題以獲得更好的解釋 – AndyD273

    1

    更新:

    ,因爲在表元素嵌套輸入元素是不合法的HTML語法。 Chrome和Firefox平滑了這個「問題」,但值得注意的是:Safari並不總是如此。要回答評論 - 如果訂單是表單>表>>等>輸入不正確,表>表>東西>表單>輸入是好的。

    格式化的「正確」方式基本上是div s或fieldset s,然後是style屬性。各種display選項可能會是你想要的(inlineinline-block可能是最有用的,雖然table和各種衍生產品取決於你必須支持哪些版本的IE) - 讀here to figure out what's at your disposal,雖然可能有一些設置高度和寬度的騙局。

    老:

    可以更換一個多選擇的接口的複選框接口?這可能是一種解決......繁瑣的IE實現的方法。那就是:

    <select multiple name="DealerType"> 
    <option value="1">GM</option> 
    //...etc 
    </select> 
    

    此外,從您的樣品,你隱藏的元素不是封閉的(與/>代替>終止)。根據您處理的是哪個IE,這可能是問題的一部分。

    另一個澄清評論:您使用的是什麼版本的jQ?

    +0

    對於非封閉式投入,你是對的,而多選擇幫助我發現問題不在於形式投入。我更新了問題以更好地反映問題。 – AndyD273

    +0

    如果您通過w3 html驗證服務在表格內運行輸入,它就會有效。理所當然,假設他們在正確的順序表> tr> td>輸入。 –

    +0

    我已經使用表格來永遠格式化表格。這是一個簡單的方法,使文本框排隊,例如,至少非jQuery的東西(傳統表單提交),它總是工作正常。如果這不是合法的HTML,那麼我可以學習新的東西,但格式化表單並使其成爲一致的正確方法是什麼? – AndyD273

    相關問題