【问题标题】:Radio buttons not submiting单选按钮未提交
【发布时间】:2014-04-23 10:42:44
【问题描述】:
$(".dist_radio").click(function(event) {
        event.preventDefault();
        $(".dist_radio").removeClass('dist_on');
        $(".dist_radio").children('input').attr('checked', false);
        $(this).addClass('dist_on');
        $(this).children('input').attr("checked", true);
    });

是我处理自定义样式单选按钮的方式,如果我单击单个单选按钮 (#1) 并提交表单,一切都很好 - 如果我选择另一个单选按钮,它将被正确发送 (note that I'm having my form submit in a new window)单选按钮 (#2) 并提交表单 - 再次,给定的收音机正在发送没有问题,但是如果我然后单击以前提交的单选按钮 (#1),我会收到一个验证错误,我没有'没有选择任何单选按钮,即使通过使用萤火虫检查元素,我可以看到它设置了checked="checked"

为什么会这样,我可以做些什么来解决它?

【问题讨论】:

  • 使用.prop() 而不是.attr()
  • @Anton 那肯定很简单 :) 谢谢!
  • @Anton 将此作为答案提供 - 而不是评论。海报都准备好了评论说它有效。

标签: javascript php jquery html forms


【解决方案1】:

使用.prop() 而不是.attr() 作为属性值

$(".dist_radio").click(function(event) {
    event.preventDefault();
    $(".dist_radio").removeClass('dist_on');
    $(".dist_radio").children('input').prop('checked', false);
    $(this).addClass('dist_on');
    $(this).children('input').prop("checked", true);
});

【讨论】:

    【解决方案2】:

    从一张幻灯片到下一张幻灯片的转换由您的 submitHandler 处理,因此单选按钮需要做的是在单击时提交表单,请记住这一点:

    $('input[type=radio]').click(function() {
        $(this).closest("form").submit();
    });
    

    【讨论】:

      【解决方案3】:

      偶然发现了这个问题并花了几个小时解决它。这就是为什么:

      .prop() vs .attr()

      【讨论】:

      • 最好在此处发布内容作为答案。未来的链接可能是 404。提供链接仅供参考。