2013-05-22 32 views
2

我在頁面中有一個文本框。 <input type="text" id="cell">帶有硬編碼短劃線的文本框值

我已經使用下面的jquery ....

i = 0; 
$(document).ready(function() { 
    $("#cell").keypress(function() { 
     i += 1; 
     if (i == 4) { 
      var cellValue = $("#cell").val() + "-"; 
      $("#cell").val(cellValue); 
     } 
    }); 
}); 

每當用戶類型12345678(或任何數量的)它自動顯示123-45678。但問題是當用戶使用退格或刪除,然後開始鍵入12345678它不顯示123-45678。請幫助

+2

我建議應用格式上的模糊,而不是按鍵。這樣,您不必擔心如果用戶將光標移到字段的中間位置,或者甚至不使用鍵盤等刪除或粘貼值,會發生什麼情況。 – nnnnnn

+0

您的代碼無法正常工作...沒有任何發生 – user2346003

+0

@nnnnnn:在這個位置你的名字是'nnnnnn',你的代表是'44444' - 這真棒! ; o) – Paul

回答

2

i應該是值的長度,而不是次數,你按下鍵

試試這個 -

$("#cell").keypress(function() { 
    i = $(this).val().length; 
    if (i == 3) { 
     var cellValue = $("#cell").val() + "-"; 
     $("#cell").val(cellValue); 
    } 
}); 

演示-->http://jsfiddle.net/KZmc9/2/

+0

它應該是'i == 3'。 – kelunik

+0

您的代碼無法正常工作 – user2346003

+1

@ user2346003。請參閱演示' - >'http://jsfiddle.net/KZmc9/2/ –

0

嘗試

$(document).ready(function(){ 
    $("#cell").keypress(function(){ 
     if (this.value.length == 3) { 
      $("#cell").val(this.value + "-"); 
     } 
    }); 
}); 

演示:Fiddle

+0

這工作正常。但它不會刪除最後三個字符。 – user2346003

+0

你是什麼意思'它不會刪除最後三個字符? –

+0

如果您嘗試使用退格刪除前3個字符。 – kelunik

0

我會將輸入分成兩部分,因爲否則用戶必須刪除短劃線,如果他們想刪除第三個數字。

http://jsfiddle.net/TATnK/

$(document).ready(function() { 
    $('#cell_1').on('input', function(e) { 
     if($(this).val().length == 3) { 
      $('#cell_2').focus(); 
     } 
    }); 

    $('#cell_2').keyup(function(e) { 
     if(e.which == 8 && $(this).val().length == 0) { 
      $('#cell_1').focus();    
     } 
    }); 
});