#javascript
#javascript
Вопрос:
Я пытаюсь проверить почтовый индекс Квебека перед отправкой формы. Предполагается, что следующая функция (onBlur) переводит буквы в верхний регистр и удаляет все пробелы. Все, что предшествует «else», работает нормально.
function back2(that){
if (that.value.length <=4) {
that.value = that.getAttribute("default");
that.setAttribute("class", "exemple");
} else {
if (that.getAttribute("id") == 'zip') {
that.setAttribute("value", that.value.replace(/s/g, ""));
that.setAttribute("value", that.value.toUpperCase());
}
}
}
Это часть кода проверки формы, запускаемого событием onSubmit:
if (f.value != "^G//d//D//d//D//d$" ||
f.value != "^H//d//D//d//D//d$" ||
f.value != "^J//d//D//d//D//d$" ||
f.value != "^K1//D//d//D//d$" ||
f.length !=6 ) {
alert("Veuillez mettre un code postal valide du Québec, merci.");
return false;
}
return true;
}
и HTML-код:
<td>Code Postal</td>
<td><input name="zip" type="text"
id="zip" value="J0B4M1" size="35"
class="exemple" onfocus="clean(this)"
onblur="back2(this)" default="J0B4M1"></td>
В обеих частях кода JS есть проблемы, потому что ничего не происходит, когда я меняю поля, а почтовый индекс содержит пробелы и написан строчными буквами. Кроме того, я получаю предупреждение, даже если формат почтового индекса правильный. Помогите!
Комментарии:
1. упс… косые черты при пересылке должны быть обратными
Ответ №1:
Вы не можете сопоставить регулярное выражение, подобное этому:
f.value != "^G//d//D//d//D//d$"
Вам понадобится .match
или .test
. Мне нравится совпадать:
f.value.match(...)
Я действительно не знаю, что это за регулярное выражение… Их много /
и нет
. Я в замешательстве!
PS
Это тот самый:http://regexlib.com/REDetails.aspx?regexp_id=570 Вам должен понравиться Guugle!
Если это тот, вы могли бы использовать это:
if ( !f.value.match(/^[a-zA-Z]{1}[0-9]{1}[a-zA-Z]{1}(-| |){1}[0-9]{1}[a-zA-Z]{1}[0-9]{1}$/) ) { alert('Oy! That's not right!'); }
Хотя это не идеально (обратите внимание на бесполезность {1}
)… Эй, если это сработает, верно!?
Комментарии:
1. ~ Вы уверены, что {1} бесполезно?
2. ~ Спасибо за ссылку. Я модифицировал его код, и эта часть теперь работает. Спасибо!
3. Да. Определенно в этом случае. (Я думаю, всегда.) И все
[0-9]
может быть записано какd
. И[a-zA-Z]
как[a-z]
, если вы добавитеi
флаг в (после последнего/
).