Проверка почтового индекса удаляет лишние числа при включении

0

ik имеют вход, где должен быть проверен zipcode. Это то, что у меня есть на данный момент.

$("input[id='postal']").keyup(function count() {

    var zipcodeValue = this.value;
    zipcodeCheck = zipcodeValue.split(" ").join("");
    var regex = new RegExp(/^[0-9]{4}[a-z]{2}$/i);

    if (regex.test(zipcodeCheck) == true) {   
        // something
    } else {
        // something else
    }
});

Это работает, но я хочу отключить пользователя для ввода более четырех цифр. Почтовый индекс должен быть таким, как 1234AB или 1234 AB, но не 12345B.

Могу ли я удалить пятый/шестой номер, когда набирается клавиатура?

спасибо

  • 0
    Используйте keydown и return false если пользователь ввел пятое число (сосчитайте уже набранные цифры. Если пользователь набрал четыре цифры, а нажатая тоже цифра, верните false)
  • 0
    Будет ли он работать с использованием маскированного ввода: проверьте ссылку на вкладку «демо»
Теги:

2 ответа

1
Лучший ответ

Что об этом - http://jsfiddle.net/bS9Q8/

$("#postal").keydown(function(e) {
    var zipcodeValue = this.value + String.fromCharCode(e.keyCode);;
    if (zipcodeValue.length<5) { return true;}
    var regex = new RegExp(/^[0-9]{4}[a-z]{2}$/i);
    if (zipcodeValue.length==5) {
        regex = new RegExp(/^[0-9]{4}[a-z]{1}$/i);
    }
    if (regex.test(zipcodeValue) != true) {   
        return false;        
    }
});
0

Попробуйте запустить событие keydown

$("input[id='postal']").keydown(function (event) {
 var zipcodeValue = this.value;
 zipcodeCheck = zipcodeValue.split(" ").join("");
 var regex = new RegExp(/^[0-9]{4}[a-z]{2}$/i);

 if (regex.test(zipcodeCheck) == true) {   
     // something
 } else {
     // something else
     return false;
 }

});
  • 0
    Это не сработает, когда кто-то печатает.
  • 0
    Идея хорошая, но пример не сработает, потому что он вернет false, и вы ничего не сможете напечатать
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню