切换依赖于按钮状态的功能?

时间:2013-05-13 19:15:32

标签: javascript jquery

我正在尝试将按钮单击转换为启用或禁用某个功能的切换,具体取决于其状态。该函数允许使用回车键进行表单提交。

var enterToggle = true;
function enterToggleListener(elem) {
  enterKeyPress();
  elem.click(function() {
    enterToggle = !enterToggle;
    console.log('enter-toggle clicked')
    if (enterToggle === false) {
      console.log('enter toggle false')
      // What do I need to add here to stop 'enterKeyPress()'?
    } else {
      console.log('enter toggle true')
      enterKeyPress();
    }
  });
}

function enterKeyPress() {
  $('#noteText').keypress(function(e){
    if(e.which == 13){
      $('#noteButton').click();
    }
  });
}

enterToggleListener($('#toggle-button'));

我不明白的是当enterKeyPress()为假时如何停止enterToggle功能。有什么建议吗?

编辑:清理代码,添加@James Montagne的答案

var enterToggle = true;
function enterToggleListener(elem) {
  elem.click(function() {
    enterToggle = !enterToggle;
    if (enterToggle === false) {
      $('#enter-toggle').text('Enter key saves note (OFF)')
    } else {
      $('#enter-toggle').text('Enter key saves note (ON)')
    }
  });
}

function enterKeyPress() {
  $('#noteText').keypress(function(e){
    if(enterToggle && e.which == 13){
      $('#noteButton').click();
    }
  });
}

enterKeyPress();
enterToggleListener($('#enter-toggle'));

1 个答案:

答案 0 :(得分:0)

function enterKeyPress() {
    $('#noteText').keypress(function(e){
        if(enterToggle && e.which == 13){
            $('#noteButton').click();
        }
    });
}

您只需检查处理程序中变量的值即可。这样您就不需要继续添加和删除处理程序,因为这似乎是您当前的方法。

但是,如果您因某些原因必须添加和删除,则可以使用off