Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果至少选中了两个复选框,如何启用“提交”按钮?_Javascript_Jquery - Fatal编程技术网

Javascript 如果至少选中了两个复选框,如何启用“提交”按钮?

Javascript 如果至少选中了两个复选框,如何启用“提交”按钮?,javascript,jquery,Javascript,Jquery,在这里找到的答案的帮助下,我尝试禁用submit按钮,并在单击它时发送警报消息,直到没有选中至少两个复选框为止 我做错了什么 var selected = $('#frmCompare :checkbox:checked').length; function verifCompare() { if (selected >= 2) { //good $('#frmCompare').submit(); } else { //b

在这里找到的答案的帮助下,我尝试禁用submit按钮,并在单击它时发送警报消息,直到没有选中至少两个复选框为止

我做错了什么

var selected = $('#frmCompare :checkbox:checked').length;

function verifCompare() {
    if (selected >= 2) {
        //good
        $('#frmCompare').submit();
    } else {
        //bad
        alert('Veuillez selectionner au moins 2 produits à comparer...');
        return false
    }
}

$(document).ready(function () {
    $('#btnCompare').attr('disabled', 'disabled');
    $('#frmCompare :checkbox').change(function () {
        //alert(selected);
        if (selected >= 2) {
            $('#btnCompare').attr('enabled');
        }
    });
});
此时,只有警报消息起作用


编辑:添加了fiddle

HTML中没有启用的
属性

$('#btnCompare').prop('disabled', selected < 2);
$('btnCompare').prop('disabled',selected<2);

您还需要在每次
更改
时重新计算所选
的值,您不能只按照页面加载时设置的值进行操作。

HTML中没有启用的
属性

$('#btnCompare').prop('disabled', selected < 2);
$('btnCompare').prop('disabled',selected<2);

您还需要在每次
更改
时重新计算所选
的值,您不能只按照页面加载时设置的值进行操作。

在首次解析脚本时,只需初始化一次复选框计数。稍后将不会重新计算计数。这一行:

var selected = $('#frmCompare :checkbox:checked').length;

应该在验证函数内部,而不是外部。

在首次解析脚本时,只需初始化一次复选框计数。稍后将不会重新计算计数。这一行:

var selected = $('#frmCompare :checkbox:checked').length;

应该在验证功能内部,而不是外部。

您应该将代码更改为

$('#frmCompare :checkbox').change(function(){

  //update selected variable
  selected = $('#frmCompare :checkbox:checked').length

  if (selected >= 2) {
     $('#btnCompare').attr('enabled');
  }
});

您应该根据需要更改代码

$('#frmCompare :checkbox').change(function(){

  //update selected variable
  selected = $('#frmCompare :checkbox:checked').length

  if (selected >= 2) {
     $('#btnCompare').attr('enabled');
  }
});

请显示HTML。什么样的控件是
#frmCompare
#btnCompare
?@Hogan:
#frmCompare
是我表单的名称,
#btnCompare
添加了submit按钮文件,以帮助我查看发生了什么?我不相信该文件与您的代码相同,因为该文件不显示警报消息,您声称该消息与您的代码一起工作。请显示HTML。什么样的控件是
#frmCompare
#btnCompare
?@Hogan:
#frmCompare
是我表单的名称,
#btnCompare
添加了submit按钮文件,以帮助我查看发生了什么?我不相信小提琴与您的代码相同,因为小提琴没有显示警报消息,并且您声称该消息与您的代码一起工作。您只在小提琴中实现了代码更改。您没有将
select
的计算移动到
onchange
事件中。在代码中,
select
的值将始终是加载页面时的值。您只在小提琴中实现了代码更改。您没有将
select
的计算移动到
onchange
事件中。在代码中,
select
的值将始终是加载页面时的值。