2013-08-03 2 views
0

В форме у меня есть текстовое поле, и я хотел бы использовать 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

Вы правы. но также, если текст скопирован в текстовое поле, событие keyup не запускается ... –

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