javascript函数没有执行

时间:2016-03-28 13:22:45

标签: javascript jquery

我有一个复选框。如果我检查它,它将选择所有结果: HTML:

<input type="checkbox" id="selectallcheckbox" onClick="toggle(this)" />

和Javascript:

function toggle(source = false) {
    if(!source)
    {
        var source = document.getElementById('selectallcheckbox');
    }
  checkboxes = document.getElementsByName('id[]');
  for(var i=0, n=checkboxes.length;i<n;i++) {
    checkboxes[i].checked = source.checked;
    var id = checkboxes[i].id;
    var res = id.replace("checkbox", "tr");
    if(source.checked)
    {
        $('#' + res + '').addClass('selected');
    } else {
        $('#' + res + '').removeClass('selected');
    }
  }
}

现在,如果我在键盘上单击CTRL + A,我会尝试选择所有结果。这是我的JavaScript:

jQuery(document).keydown(function(e) {
  if (e.ctrlKey) {
    if (e.keyCode == 65 || e.keyCode == 97) { // 'A' or 'a'
      e.preventDefault();
      toggle();
    }
  }
});

但是这个功能不起作用。如何使ctrl + a选择所有结果

2 个答案:

答案 0 :(得分:0)

我找到了解决方案:

jQuery(document).keydown(function(e) {
  if (e.ctrlKey) {
    if (e.keyCode == 65 || e.keyCode == 97) { // 'A' or 'a'
      e.preventDefault();
      document.getElementById("selectallcheckbox").click();
    }
  }
});

答案 1 :(得分:0)

切换功能需要参数或什么都不需要。当没有传递参数时,参数本身可以直接从dom获得。在html中,toggle函数获取this关键字。元素本身被传递。但是如果没有传递参数,则参数是未定义的,因此可以动态计算:

<input type="checkbox" id="selectallcheckbox" onClick="toggle(this)"/>

在切换功能中尝试更改:

function toggle(source = false) {
   if(!source)
   {
      var source = document.getElementById('selectallcheckbox');
   }
   ...........

为:

   function toggle(source) {
        if (source === undefined) {
            source = document.getElementById('selectallcheckbox');
        }

最后,在你的jQuery(文档).keydown(function(e){更改为:

   jQuery(document).keydown(function(e) {
        if (e.ctrlKey) {
            if (e.keyCode == 65 || e.keyCode == 97) { // 'A' or 'a'
                e.preventDefault();

                // get the argument to the toggle function
                var eleObj = document.getElementById('selectallcheckbox');

                // toggle the checkbox status
                eleObj.checked = !eleObj.checked;

                // call the toggle function with the correct argument
                toggle(eleObj);
            }
        }
    });