2013-03-03 3 views
1

Вот как раз я пытаюсь сделать свой текстовый блок допустимым только для чисел. Я могу обнаружить keyCode, но event.preventdefault() не работает.event.preventdefault() не работает над событием изменения текстового поля

полный HTML + JavaScript

<HTML> 
    <HEAD> 
     <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script> 
     <script type="text/javascript"> 
      $(document).ready(function() { 
       $("#textbox1").keydown(function(event) { 
        try 
        { 
         if (event.keyCode >= 48 && event.keyCode <= 57) 
         { 
          alert("valid number"); 
         } 
         else 
         { 
          event.preventDefault(); 
          alert("It's NAN"); 
         } 
        } 
        catch(ex) { 
         alert('An error occurred and I need to write some code to handle this!'); 
        } 
        event.preventDefault();  
       }); 
      }); 
     </script> 
    </HEAD> 
    <BODY> 
     <FORM> 
      <input type="text" id="textbox1"> 
     </FORM> 
    </BODY> 
</HTML> 

вот fiddle.

Как достичь того же?

ответ

5

Используйте событие keypress, чтобы перехватить изменение.

Demonstration

+0

Это не работает в FF 19.0. –

+0

Используйте 'event.which' для совместимости с FF. См. Обновленный скрипт. –

+0

он работает нормально, но не могли бы вы рассказать, почему keypress не keydown? в чем проблема, вызванная keydown? –

0

Как сказал @dystroy, вы должны изменить свой KeyDown в Keypress и вы должны удалить event.preventDefault(); ближе к концу (второй), чтобы сделать код работы.

JSFiddle Updated

+1

Что это значит? Посмотрите на исходный код, в котором у него есть два preventDefault. Один в другом и один ближе к концу. Я сказал, что убрать предупреждение, которое было близко к концу – MIIB

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