2014-03-12 42 views
-1

下面的代碼會在用戶鍵入其中時使用另一個字段的內容填充禁用的表單字段。jQuery,如果var = 1,請執行此操作

單擊「編輯」時啓用禁用表單字段,並顯示兩個選項「取消」和「保存」。

一旦點擊「編輯」變量「計數器」設置爲= 1

這裏就是我未能達到...

如果計數器== 1那麼新的汽車人口應該停止啓用字段。

但是,儘管計數器變量正在更新,但自動填充仍處於活動狀態。

任何想法?

JSfiddle here.

$(document).ready(function(){ 
var counter = 0 
$('#filename_edit').click(function(){ 
    $('#filename').prop('disabled', false); 
    $(this).hide(); 
    $('#filename_edit_btns').show(); 
    counter = 1; 
    alert(counter); 
}); 
$('#filename_edit_cancel').click(function(){ 
    $('#filename').prop('disabled', true); 
    $(this).parent().hide(); 
    $('#filename_edit').show(); 
    counter = 0; 
    alert(counter); 
}); 
$('#filename_edit_save').click(function(){ 
    $('#filename').prop('disabled', true); 
    $(this).parent().hide(); 
    $('#filename_edit').show(); 
    counter = 1; 
    alert(counter); 
}); 
if (counter == 0) { 
    $('#title').bind('keyup keypress blur', function() { 
     var myStr = $(this).val() 
      myStr=myStr.toLowerCase(); 
      myStr=myStr.replace(/[^a-zA-Z0-9 ]+/g,""); 
      myStr=myStr.replace(/\s+/g, "-"); 

     $('#filename').val(myStr); 
    }); 
} 
}); 
+2

你的if語句只運行一次。如果您希望每次計數更新時都運行它,請將其封裝在每次更新計數時執行的函數中。 –

回答

2

如果我得到它的權利,你不希望字段在打開編輯時自動填充。

但是你在頁面加載時綁定你的函數,所以即使counter改變了,綁定仍然打開,函數會觸發。

一種解決方案是您的測試進入綁定:

$('#title').bind('keyup keypress blur', function() {   
    if (counter == 0) {        //<--- Here 
     var myStr = $(this).val(); 
     myStr=myStr.toLowerCase(); 
     myStr=myStr.replace(/[^a-zA-Z0-9 ]+/g,""); 
     myStr=myStr.replace(/\s+/g, "-"); 
     $('#filename').val(myStr); 
    } 
}); 

Here's a working demo

+0

完美的,很好的解釋。知道這將是簡單的事情。 – Dijon

1

if語句執行一次,你可以把它移到處理程序的身體:

$('#title').bind('keyup keypress blur', function() { 
    if (counter === 1) return; 
    var myStr = $(this).val() 
     myStr=myStr.toLowerCase(); 
     myStr=myStr.replace(/[^a-zA-Z0-9 ]+/g,""); 
     myStr=myStr.replace(/\s+/g, "-"); 

    $('#filename').val(myStr); 
}); 
相關問題