2013-05-13 2 views
1

Я пытаюсь повернуть кнопку-щелчок в переключатель, который включает или отключает функцию в зависимости от ее состояния. Функция позволяет использовать ключ ввода для отправки формы.Переключение функции, которая зависит от состояния кнопки?

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 ложно. Какие-либо предложения?

EDIT: Очищенные вверх код, с ответом @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

Нельзя связывать события внутри других обработчиков событий – Ian

ответ

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

Вы можете просто проверить значение переменной внутри обработчика. Таким образом, вам не нужно добавлять и удалять обработчик, как ваш текущий подход.

Однако, если вы хотите добавить и удалить по какой-либо причине, вы должны использовать off.

Смежные вопросы