2013-08-03 50 views
0

在表單中,我有一個textarea,我想用javascript來改變它的值。 這些限制是:在點或逗號後面追加空格

  • 在每個','或'。'之後。我想添加一個空白空間。
  • 如果'。'在數字之間(如2.3),它不應該添加一個空的空間。

我試過這個代碼,但瀏覽器被阻擋幾秒鐘......

$('#edit-body').bind('input propertychange', function() 
{ 
    var numbers = ["0","1","2","3","4","5","6","7","8","9"]; 
    var arr = $(this).val().split(''); 
    var news; 
    for (var i = 0; i < arr.length ; i++) 
    { 
     if (arr[i] == "." || arr[i] == ",") 
     {  

      if (numbers.indexOf(arr[i-1]) <0 && numbers.indexOf(arr[i+1]) < 0) 
      { 
       if (arr[i+1] != ' '){ 
        arr.splice(i, 0, ' '); 
       } 
      } 
     } 
    } 
    console.log(arr.toString()); 
    $(this).val(arr.toString()); 
}); 

請幫我在這裏...

+0

你的名字是「Stack Overfolow」? :) nice:D – krishgopinath

+0

嗯......'.keyup()'可能是一個更好的方式來做到這一點,只跟蹤鍵入的最後兩個字符,然後插入空間,如果最後輸入的字符不在'digits'。讓我看看我能不能把小提琴放在一起。 – DevlshOne

回答

0

jsFiddle Demo

var prevCode = 0; 
$('#testing').keypress(function (e) { 
    $('#kC').val(e.keyCode); 
    $('#pC').val(prevCode); 
    if ((prevCode == 44 || prevCode == 46) && (e.keyCode < 49 || e.keyCode > 57)) { 
     var txtCurr = $('#testing').val(); 
     var lenCurr = txtCurr.length; 
     var txtNew = txtCurr.substr(0,lenCurr); 
     $('#testing').val(txtNew + " "); 
    } 
    prevCode = e.keyCode; 
}); 
+0

謝謝你的例子,但正如我可以看到,如果有超過3個字母鍵入然後它不能正常工作。 –

+0

並非如此。無論「textarea」中有多少個字符,它都可以工作,這取決於你輸入的速度。代碼似乎無法跟上快速打字員的步伐。讓我嘗試使用'.keypress()'方法。 – DevlshOne

+0

你是對的。但如果文本被複制粘貼到textarea中,keyup事件不會被觸發... –