2013-12-06 4 views
0

Я работаю над простым примером jquery. Я хочу суммировать все числа, введенные пользователем. Пользователь должен нажать клавишу ввода после ввода номера, и если пользователь нажимает пробел, результат будет отображаться на экране. Моя проблема заключается в том, что после того, как я нажал клавишу пробела, больше не выполняется процесс суммирования. Я попробовал возможные способы, которые я думал, но я не мог это исправить. Кто-нибудь может мне помочь?Функция JQuery не работает после нажатия кнопки пробела один раз

<script type="text/javascript"> 
var typedNumber=0; 
var sum = 0; 
var textValue = $('#textbox').val(); 

$(document).ready(function(){ 
    $('#textbox').keyup(function(event){ 

      if(event.keyCode == 13){ 
       textValue = $('#textbox').val(); 
       typedNumber = parseInt(textValue); 
       sum = sum + typedNumber; 
       $('#textbox').val(""); 
      } 

      if(event.keyCode == 32){ 
       alert("Summation has been finished!, Sum = "+sum); 
       $('#resultMessage').html(sum); 
       sum = 0; 
       typedNumber = 0; 
      } 

    }); 

}); 
</script> 
+2

Какая ошибка вы видите на консоли ошибок? – Steve

+3

Это работает для меня: http://jsfiddle.net/qra8T/ –

+0

Кажется хорошо работать -> [скрипка] (http://jsfiddle.net/warlock5658/4W2aL/). – War10ck

ответ

3

Я предлагаю, чтобы проверить, если значение в поле ввода является число.

sum = 0; 
$(document).ready(function(){ 
    $('#textbox').keyup(function(event){ 
     if(event.keyCode == 13){ 
      var value = parseInt($('#textbox').val()); 
      if(!isNaN(value)) { 
       sum = sum + value; 
      } 
      $('#textbox').val(""); 
     } 
     if(event.keyCode == 32){ 
      alert("Summation has been finished!, Sum = "+sum); 
      $('#resultMessage').html(sum); 
      $('#textbox').val(""); 
      sum = 0; 
     } 
    }); 
}); 
+0

Спасибо, что это работает! Но можете ли вы объяснить разницу? Что такое изменение после того, как я проверил значение, это число. Это уже номер? Потому что я разбираю его до целого числа. – Tartar

+0

'parseInt' не гарантирует, что значение будет числом. Это может быть «NaN», который «не является числом»;) Итак, вы добавляете переменную no-number в 'sum'. Это происходит потому, что в некоторых случаях вы передаете интервал в 'parseInt'. – Krasimir

+0

Как parseInt не может этого гарантировать? и что произойдет, если я предположим, что собираюсь вводить только текстовые поля? Почему я должен проверить его снова? Извините за свои вопросы, я просто хочу понять это правильно :) – Tartar

1

Прежде чем использовать его, вы должны сначала определить переменную sum. Кроме того, вы должны использовать preventDefault внутри обработчика KeyUp

Пример: http://jsfiddle.net/9Q3dJ/

+0

Я пропустил часть своего кода, теперь я отредактировал. Проверьте эту версию, пожалуйста. Это тоже не работает. – Tartar

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