2013-05-13 31 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是假的。有什麼建議麼?

編輯:清理的代碼,用@詹姆斯蒙塔涅的答案添加

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 2013-05-13 19:19:24

回答

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

你可以簡單的處理程序中檢查變量的值。這樣你就不需要繼續添加和刪除處理程序,這似乎是你目前的方法。

但是,如果您必須添加和刪除某些原因,您將使用off