2012-02-24 3 views
1

Я подключил событие keypress к своему текстовому полю. когда пользователь нажимает другие клавиши, я выполняю некоторую обработку, но когда пользователь нажимает клавишу Enter, я отправляю значение в текстовое поле на какой-то сервер. Я могу делать всю обработку, и все прекрасно, но когда я нажимаю клавишу ввода, событие не запускается. поэтому я не могу представить свою ценность для сервера.keypress event не срабатывает, когда я нажимаю клавишу ввода

Вот мой код:

$("#txt" + filterID).keypress(txtInput_keypress); 

function txtInput_keypress(e) { 
    var code = (e.keyCode ? e.keyCode : e.which); 
    var strValue = $(this).val()+ String.fromCharCode(e.which); 
    var bool = $.trim(strValue).match(reg); 
    if (code == 13) { 
     //textbox value submission code 
    } 
    else if (parseFloat($.trim(strValue)) > max) { 
     e.preventDefault(); 
    } 
    else if (bool) { 
     return true; 
    } 
    else { 
     e.preventDefault(); 
    } 
} 

, что случилось с моим кодом? Пожалуйста, помогите мне решить эту проблему.

+0

Вы не проходите мимо мероприятия или (e) в своей функции! – adeneo

+0

@adeneo - jQuery делает это, когда вызывает функцию. – nnnnnn

+0

@nnnnnn - Вы правы, не думали, пытались проверить это, но, похоже, переменная reg не определена, может быть, это проблема, кажется, отлично работает без строки 'var bool = ...'. – adeneo

ответ

1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title></title> 
    <script src="Scripts/jquery-1.7.1.min.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      var filterID = 1, reg = '^([0-9]|[1-9][0-9]|[1-9][0-9][0-9])$', max = 1000; 

      $("#txt" + filterID).keypress(txtInput_keypress); 

      function txtInput_keypress(e) { 
       var code = (e.keyCode ? e.keyCode : e.which); 
       var strValue = $(this).val() + String.fromCharCode(e.which); 
       var bool = $.trim(strValue).match(reg); 
       if (code == 13) { 
        //textbox value submission code 
        //$('form#test').submit(); // if alert is not coming uncoment this line. 
       } 
       else if (parseFloat($.trim(strValue)) > max) { 
        e.preventDefault(); 
       } 
       else if (bool) { 
        return true; 
       } 
       else { 
        e.preventDefault(); 
       } 
      } 
     });     
    </script> 
</head> 
<body> 
    <form id="test" action="javascript:alert('success!');"> 
    <input type="text" id="txt1" /> 
    </form> 
</body> 
</html> 
+0

filterId, reg, max переменные отсутствуют. – Thulasiram

+0

, чтобы увидеть демонстрационную версию live, см. ссылку http://jsfiddle.net/nanoquantumtech/ wDKks / – Thulasiram

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