当输入在表格内时,JQuery序列化不使用Internet Explorer中的输入

时间:2012-12-11 15:26:01

标签: 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中运行。

/旧问题

2 个答案:

答案 0 :(得分:1)

更新

因为表元素中的嵌套输入元素不是合法的HTML语法。 Chrome和Firefox平稳地解决了这个“问题”,特别是:Safari并不总是如此。

回答评论 - 如果订单是表格&gt;表&gt;等等&gt;输入不正确,表&gt;表格的东西&gt;形式&gt;输入很好。

进行格式化的“正确”方式基本上是divfieldset 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?

答案 1 :(得分: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);
}​