【问题标题】:on change submit form does not pass the changed value with the form更改提交表单时不会将更改的值与表单一起传递
【发布时间】: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();
});

【问题讨论】:

  • 因为&lt;input type="radio" value="1" checked="checked"&gt;被选中
  • 我曾经遇到过这个问题,你能把你的完整表单标签也包括进来
  • @Shehary 我真的不认为这是问题......那么它不会在任何其他浏览器中工作。
  • @joyBlanks 编辑了我的帖子以显示表单标签。
  • 如果我向元素添加一个 onClick 事件,它看起来好像可以工作。所以也许我会走那条路而不是使用 onchange。

标签: jquery forms


【解决方案1】:

正如@Shehary 所说 - 您的 HTML 正在定义哪个单选按钮正在使用“checked="checked"' 在表单上提交其值,而您的 JS 只负责使表单在任何被点击的单选按钮上提交。

您可能需要添加条件以确保在 .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();
});

【讨论】:

  • 这是一个 jsfiddle 与您的建议。我添加了警报框以显示所选值。它永远不会改变。它总是 1。[链接] (jsfiddle.net/narfie/m6ehejzj/1)
  • btw.. 如果我使用 $j('input[type="radio"]').attr('checked').prop('checked', false); 我在控制台中收到错误 $j(...).attr(...).prop(...) 不是函数。
  • 我可以看到您的问题。我认为这不会有帮助,因为您仅限于您的表单提交的报告 - 但仍然可以通过以下方式检索正确的值:$j('input[name="cart[location_id]"]:checked').val() 可以在此处看到jsfiddle.net/m6ehejzj/40
【解决方案2】:

所以,我们已经尝试了一切。问题似乎不在于代码或浏览器。问题出在机器上。 (MacBook 空气) 我们已经尝试在 safari、chrome 和 firefox 中使用提交按钮以正常方式提交。在这些浏览器中的所有其他机器上(甚至在移动设备上)它都可以工作。只是不在这台机器上。

所以,我要关闭这个帖子,因为我认为我们不会在这里找到答案。

感谢所有的帮助!

【讨论】:

    猜你喜欢
    • 2016-09-16
    • 2016-03-31
    • 1970-01-01
    • 1970-01-01
    • 2019-05-21
    • 2012-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多