2013-08-08 2 views
-3

У меня есть 2 поля ввода. Я хочу, чтобы этот пользователь не мог ввести какую-либо цифру, которая начинается с 0. Обратите внимание, что только 0 в начале. Это может быть в конце или в середине, но не в начале.Поле ввода - запретить пользователю вводить 0 в качестве первой цифры

Так позвольте 4, 40, 4440, но не 04.

Проверить это fiddle где я поместил несколько других ограничений, как только числовые значения разрешены, длина 4. Теперь я хочу, чтобы добавить ограничение, связанные с 0.

Как это можно сделать с помощью jQuery?

HTML

<input name="major" size="1" value="4" class="major_rev">. 

<input name="minor" size="1" value="24" class="minor_rev"> 
+0

Только тест на 'keyup', а не на' keydown' и использовать простой регулярное выражение (что-то вроде '/^ [1-9] \ d * $/') – Zeta

+0

Знаете ли вы, что вы не позволяете людям использовать поля с numpad? – Sumurai8

+0

Если я использую 'keyup', то проверка на' not allow alphabets' не работает. –

ответ

0

Sangram и ответы miklshake «s помог мне. Ниже приведено комбинированное решение.

$(document).on('keyup','.major_rev', function(event){ 

    var input = event.currentTarget.value; 

    if(input.search(/^0/) != -1){ 
     alert("you have started with a 0"); 
    } 
}); 
$(document).ready(function() { 
    //For numeric 
    $(".major_rev").keydown(function(event) { 
     // Allow only backspace and delete 
     if (event.keyCode == 46 || event.keyCode == 8) { 
      // let it happen, don't do anything 

     } 
     else { 
      // Ensure that it is a number and stop the keypress 
      if ((event.keyCode !==9) && (event.keyCode < 48 || event.keyCode > 57)) { 
       event.preventDefault(); 
      } 
       else{ 

       if($.trim($(this).val()) =='') 
      { 
       if(event.keyCode == 48){ 
       event.preventDefault(); 
       } 
      } 

      } 
     } 
    }); 
    $(".minor_rev").keydown(function(event) { 
     // Allow only backspace and delete 
     if (event.keyCode == 46 || event.keyCode == 8) { 
      // let it happen, don't do anything 
      if($.trim($(this).val()).length==0) 
      { 
       if(event.keyCode==48){ 
       event.preventDefault(); 
       } 
      } 
     } 
     else { 
      // Ensure that it is a number and stop the keypress 
      if (event.keyCode < 48 || event.keyCode > 57) { 
       event.preventDefault(); 
      } 
      else{ 

       if($.trim($(this).val()) =='') 
      { 
       if(event.keyCode == 48){ 
       event.preventDefault(); 
       } 
      } 
      } 
     } 
    }); 
    //For MaxLength 
    $(".major_rev").prop("maxlength","4"); 
    $(".minor_rev").prop("maxlength","4"); 
}); 

jsFiddle

4

Попробуйте

DEMO

$(document).ready(function() { 
    //For numeric 
    $(".major_rev").keydown(function(event) { 
     // Allow only backspace and delete 
     if (event.keyCode == 46 || event.keyCode == 8) { 
      // let it happen, don't do anything 

     } 
     else { 
      // Ensure that it is a number and stop the keypress 
      if ((event.keyCode !==9) && (event.keyCode < 48 || event.keyCode > 57)) { 
       event.preventDefault(); 
      } 
       else{ 

       if($.trim($(this).val()) =='') 
      { 
       if(event.keyCode == 48){ 
       event.preventDefault(); 
       } 
      } 

      } 
     } 
    }); 
    $(".minor_rev").keydown(function(event) { 
     // Allow only backspace and delete 
     if (event.keyCode == 46 || event.keyCode == 8) { 
      // let it happen, don't do anything 
      if($.trim($(this).val()).length==0) 
      { 
       if(event.keyCode==48){ 
       event.preventDefault(); 
       } 
      } 
     } 
     else { 
      // Ensure that it is a number and stop the keypress 
      if (event.keyCode < 48 || event.keyCode > 57) { 
       event.preventDefault(); 
      } 
      else{ 

       if($.trim($(this).val()) =='') 
      { 
       if(event.keyCode == 48){ 
       event.preventDefault(); 
       } 
      } 
      } 
     } 
    }); 
    //For MaxLength 
    $(".major_rev").prop("maxlength","4"); 
    $(".minor_rev").prop("maxlength","4"); 
}); 
+0

Спасибо, но в этом решении, если я вхожу '4000', а затем удалить' 4' с начала, тогда я могу создать сценарий с '0' в начале. –

0

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

$("input").blur(function(){ 
    var val = $(this).val(); 
    if(val.indexOf("0") == 0) { 
     $(this).val(""); 
     $(this).attr("placeholder", "Invalid"); 
    } 
}); 
1

как об использовании этой простой проверки:

$(document).on('keyup','#testBox', function(event){ 

    var input = event.currentTarget.value; 

    if(input.search(/^0/) != -1){ 
     alert("you have started with a 0"); 
    } 
}); 

jsFiddle

1

Это своего рода поздно, но попробовать это легко и просто

$(".major_rev").on("keyup", function() {    
    if ($(this).val() == 0) { 
    $(this).val(null);          
    }     
}); 
Смежные вопросы