提交表单时取消选中复选框

时间:2011-11-01 10:14:09

标签: jquery html

在使用.click()函数而不是.change()函数用于复选框时,我不确定这是否是jQuery中的错误。它在jsfiddle 上运行良好 1http://jsfiddle.net/fadlisaad/tSgbZ/16/但不在实际网页http://webcollect.viewscast.com/canonrepairmobile

您可以按以下顺序进行测试:

  1. 语言>英
  2. 国家>英国
  3. 点击“继续”
  4. 选择任何选项,然后点击“继续”查看下一个问题,直到找到问题“在修复产品之前,您采取了哪些步骤来尝试解决问题?”
  5. 尝试选择最后一个选项“以上都不是”,然后点击“继续”。在加载到下一个问题期间,已检查选项本身已被神秘地取消选中,因此如果您在下一页上查看来源,您会发现<INPUT TYPE="Hidden" ID="__OUTP__ResolveWay_7" NAME="__OUTP__ResolveWay_7" VALUE="">应为<INPUT TYPE="Hidden" ID="__OUTP__ResolveWay_7" NAME="__OUTP__ResolveWay_7" VALUE="1">

    它与其他复选框一起工作正常。有人能弄明白为什么吗?

4 个答案:

答案 0 :(得分:3)

使用此代码:

$('input[name!="ResolveWay_7"]').click(function() {
    $('input[name="ResolveWay_7"]').removeAttr('checked');
});

你这样做是为了每次点击输入时,复选框都会被取消激活。因此,当您单击提交按钮(是的,这也是输入)时,它会取消选中该复选框。

我相信您只需将选择器更改为$('input[type="checkbox"][name!="ResolveWay_7"]')即可。

答案 1 :(得分:3)

问题在于这段代码:

$('input[name!="ResolveWay_7"]').click(function() {
    $('input[name="ResolveWay_7"]').removeAttr('checked');
});

您的继续按钮也将满足该jQuery选择器,因为它的类型为<input>,并且不会被称为ResolveWay_7。因此,单击“继续”按钮时,将取消选中该复选框。

答案 2 :(得分:1)

查看页面源代码的底部,选择“以上都不是”。

<script type="text/javascript"> 
/* <![CDATA[ */
$(document).ready(function() {
    $('#comment').hide();
    $('#specify').click(function() {
        $('#comment').toggle();
        $('textarea').val('');
    });
    $('input[name="ResolveWay_7"]').change(function() {
        $('input[name!="ResolveWay_7"]').removeAttr('checked');
        $('textarea').val('');
        $('#comment').hide();
    });
    $('input[name!="ResolveWay_7"]').click(function() {
        $('input[name="ResolveWay_7"]').removeAttr('checked');
    });
});
/* ]]> */
</script>

有两个地方可以说:

$('input[name="ResolveWay_7"]').removeAttr('checked');

答案 3 :(得分:1)

检查一下:

$('input[name!="ResolveWay_7"]').click(function() {
    $('input[name="ResolveWay_7"]').removeAttr('checked');
});

当您点击除ResolveWay_7之外的任何输入时,它会清除checked的{​​{1}}属性,而提交按钮(继续)也是一个输入,因此单击它会清除复选框。 您需要从选择中排除按钮,如:

Resolveway_7
相关问题