#jquery #validation
#jquery #проверка
Вопрос:
Обычно я бы просто сделал это с помощью выпадающего списка, но клиент запросил, чтобы это был текстовый ввод…
В принципе, я хотел бы использовать Jquery validator для проверки того, что пользователь ввел 1 из 50 допустимых сокращений штата США в текстовое поле ввода. В противном случае они получат сообщение об ошибке. Кажется, я не могу найти функцию, которая делает это. Любая помощь приветствуется!
Ответ №1:
Вот метод проверки, который вы можете добавить для использования с jquery validate
Сначала вы объявляете валидатор:
jQuery.validator.addMethod("isstate", function(value) {
var states = [
"AL", "AK", "AZ", "AR", "CA", "CO", "CT", "DE", "FL", "GA",
"HI", "ID", "IL", "IN", "IA", "KS", "KY", "LA", "ME", "MD",
"MA", "MI", "MN", "MS", "MO", "MT", "NE", "NV", "NH", "NJ",
"NM", "NY", "NC", "ND", "OH", "OK", "OR", "PA", "RI", "SC",
"SD", "TN", "TX", "UT", "VT", "VA", "WA", "WV", "WI", "WY",
"AS", "DC", "FM", "GU", "MH", "MP", "PR", "PW", "VI"
];
return $.inArray(value.toUpperCase(), states) != -1;
}, "Data provided is not a valid state");
Затем примените валидатор
$("#myform").validate()
и в вашей форме вы хотите добавить класс к элементу формы для проверки
<input type="text" value="de" class="isstate" />
Комментарии:
1. Макгрейлм, спасибо! Это именно то, что я ищу, но я получаю это в моей консоли ошибок FireFox: Ошибка: состояния.Верхний регистр не является функцией.
2. извините, что предполагалось перейти к значению, поскольку значение — это строка, которая должна быть в верхнем регистре, чтобы проверить, что она в массиве, я думаю, что в любом случае она чувствительна к регистру
3. @Mcgrailm Я пробовал
jQuery.validator.addMethod("isstate", function(value.toUpperCase()) { var states = ['PA',"CA"] // of course you will need to add more return $.inArray(value,states); }, "Data provided is not a valid sate");
— что, похоже, неверно. Есть идеи, что я делаю не так?4. @paul Я забыл, что inarray возвращает -1 вместо false, поэтому мне пришлось изменить код, чтобы обойти это
5. На случай, если это кому-нибудь поможет… вот точная функция, которую я в конечном итоге использовал:
jQuery.validator.addMethod("isstate", function(value) { var states = [,"AK","AZ","AR","CA","CO","CT","DE","DC","FL","GA","HI","ID","IL","IN","IA","KS","KY","LA","ME","MT","NE","NV","NH","NJ","NM","NY","NC","ND","OH","OK","OR","MD","MA","MI","MN","MS","MO","PA","RI","SC","SD","TN","TX","UT","VT","VA","WA","WV","WI","WY" ] var in_array = $.inArray(value.toUpperCase(), states); if (in_array == -1) { return false; }else{ return true; } }, "Please enter a valid US state");
Ответ №2:
Вы могли бы использовать прослушиватель change(), который просто проверяет входные данные по вашему списку допустимых входных строк и включает кнопки отправки только в том случае, если у вас есть совпадение.
В любом случае. Для удобства пользователя лучше показывать выпадающий список всех возможных состояний. По крайней мере, это то, о чем я подумал сначала, когда отвечал на ваш вопрос.
С уважением,
Крис
Ответ №3:
Вот грязное быстрое решение: