2013-07-19 2 views
0

У меня есть следующее текстовое поле на моей странице html. Проверка текстового поля через событие onkeyup JQuery без использования предупреждения

Код, который я использую до сих пор.

<input type="text" id = "points" onkeyup="Validate()"> 
function Validate(){ 


var text_value = document.getElementById("points").value; 
alert(text_value); 

    if (!text_value.match(/^[56789]$/) && document.getElementById(called_id).value !="") 
    { 
     document.getElementById("points").value=""; 
     // document.getElementById("points").focus(); 
     alert("Please Enter only between 5 and 10 "); 
    } 

}  

Принятые значения: 5, 6, 7, 8, 9 и 10. Я нашел способ, основанный на событии onkeyup, принять только 5, 6, 7, 8 и 9. Я хочу знать, как включить туда 10. Также я хочу знать проверку событий onkeyup для того же, используя jquery.

  1. Если пользователь дает другое значение, кроме этого, он должен быть указан справа от текстового поля как «Значение должно быть от 5 до 10» (а не как предупреждение).
  2. Если первое введенное значение равно 1, оно должно ждать нажатия следующей клавиши. Принять, если он равен 0 или поднять то же сообщение об ошибке, что и в предыдущем случае.
+3

Это не сайт, на котором вы нанимаете разработчиков для работы за вас (так как вы никому не платите). Это сообщество, которое помогает вам с кодом. Мы не строим полный код для вас. Обновите свой пост и покажите нам, что вы пробовали. – Shawn31313

+0

Я использовал бдительность и делал от 5 до 9. Мне нужна помощь в оставшихся, поэтому я спросил –

+0

. Отправьте свой код здесь. Plz –

ответ

1

Working Jsfiddle

Я предпочел бы без регулярных выражений:

function validate() { 
    var num = document.getElementById("points2").value; 
    var num = parseInt(num, 10); 
    alert(num); 
    if (num < 5 || num > 10) { 
     document.getElementById("points2").value = ""; 
     alert("Please Enter only between 5 and 10 "); 
    } 
} 

изменить ваши регулярные выражения для:

/^([5-9]|10)$/ 

вы должны использовать onchange событие:

<input type="text" id = "points" onchange="Validate()"> 

function Validate(){  
var text_value = document.getElementById("points").value; 
alert(text_value); 

    if (!text_value.match(/^([5-9]|10)$/) && document.getElementById(called_id).value !="") 
    { 
     document.getElementById("points").value=""; 
     // document.getElementById("points").focus(); 
     alert("Please Enter only between 5 and 10 "); 
    } 

} 
+0

Спасибо, но не возможно с onkeyup, потому что я хочу, чтобы изменения делались без фокуса, перемещается в другой элемент. –

0
$('#textbox').keyup(function() { 
    var value = $('#textbox').val(); 
    if(value != ''){ 
     if(!value.match(/^[5678910]$/)) 
      textboxError(); 
     else{ 
      var length = value.length; 
      if(value.charAt(length-1) == 0 && value.charAt(length-2) != 1) 
       textboxError(); 
     } 
    } 
}; 

$('#textbox').change(function() { 
    var value = $('#textbox').val(); 
    if(value != '') 
     textboxError(); 
    } 
}; 

function textboxError(){ 
    $('#textbox').val(''); 
    $('#textbox').focus(); 
    alert("Please Enter only between 5 and 10 "); 
} 

Что мы делаем,

  1. Проверьте значение пусто (если пусто не выполнять ничего)
  2. Если не пустой чек, если значение совпадает с определенным набором
  3. If он соответствует, теперь мы проверяем на 10. Что мы делаем, если последний введенный элемент поля равен 0, то предыдущее поле должно быть равным 1, поэтому оно составляет 10. Если мы не будем бросать ошибку.
  4. Но вот проблема: пользователь может ввести 1 и оставить поле без ввода другого символа. Таким образом, вы можете расширить это поле onchange.
  5. Onchange, теперь мы проверяем счет 1 и это должно совпадать с числом 10. Оно исправляет нашу проблему. Вам не нужно беспокоиться о 0, потому что мы уже проверяем его в блоке блокировки.

I Не проверял код. Поэтому, если какие-либо опечатки или ошибки, вы можете их заменить.

+0

Ранее у меня было подобное регулярное выражение, но это тоже позволяет 0. –

0

Как заявляет Захир Ахмед, /^([5-9]|10)$/ также поймает 10. Для слушателя событий, вы можете использовать

$('#textbox')[0].addEventListener('input', function(event) { 
    var value = $(event.target).val(); 
    // we already have a reference to the element through the event object, 
    // crawling the DOM again is expensive. 

    if(value != '') textboxError(); 
}); 

Это пренебрегает JQuery, которые могут быть одобряются некоторыми, но «входных» пожары события немедленно, а также работает, если текст был вставлен или введен каким-либо другим способом ,

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