【发布时间】:2015-08-14 23:14:38
【问题描述】:
我想在单击单选按钮时提交表单。 下面的代码在我目前测试过的所有浏览器中都能正常工作,除了 Safari。
在 Safari 中,当我单击单选按钮时,似乎在实际注册新选定项的值之前提交了表单。
这是一个例子。
HTML:
<input type="radio" value="1" checked="checked">radio button 1
<input type="radio" value="2">radio button 2
<input type="radio" value="3">radio button 3
JS:
$j('input[type="radio"]').on('change',function(){
$j(this).closest('form').submit();
});
如果我单击单选按钮 2 或单选按钮 3,则提交表单,但提交的值为 1,而不是我单击的单选按钮的值。
此问题不仅限于单选按钮。我对选择框有同样的问题。当我更改值时,表单提交,但它使用旧值提交。
编辑 HTML
<form accept-charset="UTF-8" action="someurl" method="post">
<label><input checked="checked" id="1" name="cart[location_id]" type="radio" value="1">radio button 1</label>
<label><input id="2" name="cart[location_id]" type="radio" value="2">radio button 2</label>
</form>
另一个尝试 JS 这也行不通
$j('input[type="radio"]').on('change',function(){
$j('input[name="cart[location_id]"]').val($j(this).val());
$j(this).closest('form').submit();
});
【问题讨论】:
-
因为
<input type="radio" value="1" checked="checked">被选中 -
我曾经遇到过这个问题,你能把你的完整表单标签也包括进来
-
@Shehary 我真的不认为这是问题......那么它不会在任何其他浏览器中工作。
-
@joyBlanks 编辑了我的帖子以显示表单标签。
-
如果我向元素添加一个 onClick 事件,它看起来好像可以工作。所以也许我会走那条路而不是使用 onchange。