$( “形式”)serializeArray()。没有在JQuery中获取IE 9中的表单值

时间:2012-08-25 13:49:34

标签: jquery asp.net-mvc-3

我有一个要求,我需要获取表单值。我能够在IE 7和IE中获取正确的值。 IE 8.以下是表格

enter image description here

使用serializearray()我在IE 8中获取表单值我可以得到值,见下图:

enter image description here

但是在IE 9中,相同的代码行没有获取值,请参见下图:

enter image description here

有人请帮忙。我被卡住了。此外,在这个时间点我不能改变这个serializearray()函数,因为已经编写了很多代码。如果这需要改变。总工作量会有所收获

生成的html:

<form action="/SDLCMClassic/questionaire/questionairelist?projectArtifactId=53678&amp;ppmFlag=N&amp;level=Project" method="post">    <div class="body-container clearfix">
       <div class="information-body clearfix" id="tblHeader">
        <div class="information-header">
            Assesment
        </div> 
        <div class="form-align-div">
           <label>PPM ID </label>
        </div> 
        <div class="form-align-div-large">
        182944
        </div> 
        <div class="form-align-div">
           <label>App Portfolio ID </label>
        </div> 
        <div class="form-align-div-large">
        116368
        </div> 
        <div class="form-align-div">
           <label>PPM Project Name </label>
        </div> 
        <div class="form-align-div-large">
        ITSVC FY11 SOIT ITSM HPSM uCMDB Integration
        </div>
        <div class="form-align-div">
           <label>APP CIName </label>
        </div> 
        <div class="form-align-div-large">
        HPSM IT
        </div>
       </div>
</div> 
<div class="clear-both" id="QuestionaireDiv">
<div class="parent_divqn"  style="background-color:#fff;color:#000;">
    <table id="tblSdlc" width="100%">
        <tr>
            <td width="2%">
                1
            </td>
            <td width="50%">
                List of authentication methods
            </td>
            <td width="48%">
                <input type="hidden" value='DECISION' name='15' title='ListBox' />
                    <input type="hidden" id='hdnselectright' name='15' title='DECISION' />
                    <table width="45%">
                        <tr>
                            <td>
                                <label class="lable">
                                    Available</label>
                                <select id="sourcelist-15" multiple="multiple" data-mandatory='Y' data-datatype='string' data-qindex='1' class="saral-select" style="width: 269px;">
                                                <option value='1'>Active Directory</option>            
                                                <option value='2'>Enterprise Directory</option>            
                                                <option value='3'>DigitalBadge</option>            
                                                <option value='4'>SiteMinder</option>            
                                                <option value='5'>HP Passport</option>            
                                                <option value='6'>Cybersafe (SAP)</option>            
                                                <option value='7'>OATH</option>            
                                                <option value='8'>Non-Leveraged Authentication Infrastructure</option>            
                                                <option value='9'>Pending</option>            
                                </select>
                            </td>
                            <td>
                                <table>
                                    <tr>
                                        <td>
                                            <img id="MoveRight-15" src="/Content/Images/arrowRight.png" alt="Move Right"  onclick='javascript:togglelistdata(this,&#39;15&#39;,&#39;1&#39;,&#39;/SDLCMClassic/Questionaire/GetQuestionaireList&#39;)' />
                                        </td>
                                    </tr>
                                    <tr>
                                        <td>
                                            <img id="MoveLeft-15" src="/Content/Images/arrowLeft.png" alt="Move Left" onclick='javascript:togglelistdata(this,&#39;15&#39;,&#39;1&#39;,&#39;/SDLCMClassic/Questionaire/GetQuestionaireList&#39;)'/>
                                        </td>
                                    </tr>
                                </table>
                            </td>
                            <td>
                                <label class="lable">
                                    Selected</label>
                                <select id="destlist-15" multiple="multiple" class="saral-select" data-mandatory='Y' data-datatype='string' data-qindex='1' name="rightlist-DECISION" style="width: 269px;">

                                </select>
                            </td>
                        </tr>
                    </table>
            </td>
        </tr>
    </table>
</div> 
    <div class="clear-both" id="container">
    </div>
</div>
<input type="hidden" id="hdnAnsweredArray" />
<input type="hidden" id="hdninputcountArray" />
<input type="hidden" id="hdninput" />
<input type="hidden" id="hdnlistboxid" />

1 个答案:

答案 0 :(得分:3)

.serializeArray()方法使用标准W3C规则来成功控制,以确定它应包含哪些元素;特别是该元素不能被禁用,并且必须包含name属性。

从上面的HTML中,您有2个具有相同名称的隐藏字段(15),一个具有名称的选择元素(rightlist-DECISION)。没有其他东西可以作为“成功”的控件,因此serializeArray方法不会像你想要的那样工作。

使用此jQuery测试它:

var objects = ​$("form").serializeArray();
for(var i = 0; i < objects.length; i++) {
  $("#container").append(objects[i].name);
}