0

更新:好的,我需要被枪杀。我遗漏了一些表单代码以减少帖子的长度。这是完整的代码:

<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 中工作。

/老问题

4

2 回答 2

1

jQuery 的序列化不包括未选中的复选框。

看看这个小提琴:

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

您可以从以下问题中找到更多信息:

jQuery 序列化不注册复选框

忽略代码,不会让我发布答案。

$('#test').on('click', '#submit', validate);

function validate() {
    var data = $('#test').serialize();
    console.log(data);
}​
于 2012-12-11T16:04:08.783 回答
1

更新:

因为在表格元素中嵌套输入元素不是合法的 HTML 语法。不过,Chrome 和 Firefox 解决了这个“问题”,值得注意的是:Safari 并非总是如此。

要回答评论 - 如果顺序是表格 > 表格 > 等 > 输入不正确,表格 > 表格内容 > 表格 > 输入就可以了。

进行格式化的“正确”方法基本上div是 s 或fieldsets 然后是style属性。各种display选项可能是您想要的(inline并且inline-block可能是最有用的,但也可能是最有用的,table具体取决于您必须支持的 IE 版本)- 阅读此处以了解您可以使用的内容,尽管可能有一些设置高度的诡计和宽度。

老的:

可以用多选界面代替复选框界面吗?这可能是解决...繁琐...IE实现的一种方法。那是:

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

此外,从您的示例中,您的隐藏元素没有关闭(以/>而不是终止>)。根据您正在处理的 IE,这可能是问题的一部分。

另一个澄清评论:您使用的是什么版本的 jQ?

于 2012-12-11T15:50:53.227 回答