我想在点击单选按钮时提交表单。 下面的代码在我到目前为止测试过的所有浏览器中运行良好,除了在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 ,而不是我点击的单选按钮的值。
此问题不仅限于单选按钮。我对选择框有同样的问题。当我更改值时,表单会提交,但会使用旧值提交。
EDIT 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();
});
答案 0 :(得分:1)
正如@Shehary所说 - 您的HTML正在定义哪个单选按钮在表单上提交了其值'checked =“checked”',而您的JS只负责导致表单在任何单击的单选按钮上提交。< / p>
您可能希望添加条件以确保在.submit()
之前选择了哪个输入具有正确的选中值$j('input[type="radio"]').on('change',function(){
$j('input[type="radio"]').attr('checked').prop('checked', false);
$j(this).prop('checked', true);
$j(this).closest('form').submit();
});
答案 1 :(得分:0)
所以,我们已经尝试了一切。问题似乎与代码或浏览器无关。问题出在机器上。 (macbook air) 我们尝试使用safari,chrome和firefox中的提交按钮提交正常方式。在这些浏览器中的所有其他机器上(甚至在移动设备上)它都有效。只是不在这台机器上。
所以,我要关闭这个帖子,因为我认为我们不会在这里找到答案。
无论如何,Thanx获得所有帮助!