#javascript #jquery #asp.net #validation #client-side-validation
#javascript #jquery #asp.net #проверка #проверка на стороне клиента
Вопрос:
Проверьте код:
<script type="text/javascript">
function ValidateTextBox(source, args) {
var is_valid = false;
//Regex goes here
var regex = /^[a-z A-Z] $/;
var check = regex.test($('tbName').val()); //Checks the tbName value against the regex
if (check == true) {
//If input was correct
is_valid = true;
}
else {
//If input is not correct
$("tbName").css(("background-color", "#A00000"), ("border-color", "#780000"));
}
args.IsValid = is_valid; //Returns validity state
}
</script>
Я пытаюсь проверить ввод текстового поля, чтобы его единственный символ был между a и z, а также A и Z, но он по-прежнему возвращает true даже при вводе типа «1245».
Почему это так?
Спасибо
Комментарии:
1. Значение
/^[a-z A-Z] $/.test("1234")
false
в том, что проблема не в вашем регулярном выражении. Проверьте, какое значение вы передаетеtest()
2. Попробуйте инвертировать ваше регулярное выражение, чтобы найти что-нибудь недопустимое:
/[^a-z A-Z]/
иif (check) { invalid }
. Прямо сейчас ваше регулярное выражение прерывается, если вводимый текст многострочный.3. Я пытаюсь проверить значение, которое я передаю, но оно не работает должным образом. Правильно ли я выбираю элемент управления?
4. Хорошо, мне удалось проверить входные данные, выполнив: var test = $(‘#tbName’).val(); И тест содержит «undefined». Означает ли это, что элемент управления не был найден?
5. Извините за все комментарии, но я нашел проблему. Поскольку я использую masterpages, фактическим идентификатором был «ContentPlaceHolder1_tbName». Есть ли более чистый способ выбрать элемент управления и игнорировать приложение-заполнитель?
Ответ №1:
$('tbName')
может быть недопустимым селектором.
Вы имели в виду выбрать класс?
$(.tbName')
Как насчет элемента с идентификатором = tbName
?
$('#tbName')
Кроме того, зачем вам это нужно делать? Это НЕ будет доступно вне функции, поскольку это локальная переменная, передаваемая функции (через ее параметры)
args.IsValid = is_valid;
Вы можете просто выполнить простой возврат:
function ValidateTextBox() {
var regex = /^[a-z A-Z] $/;
return regex.test($('#tbName').val());
}
Комментарии:
1. О, черт, я такой новичок в javascript… как мне выбрать текстовое поле с этим идентификатором? Это показано здесь: <asp:TextBox CssClass=»block» ID=»tbName» runat=»server»></asp:TextBox>
2. «Кроме того, зачем вам это нужно делать? Это НЕ будет доступно вне функции, поскольку это локальная переменная, передаваемая функции (через ее параметры) » Мне нужно проверить в методе, чтобы увидеть, соответствует ли он, чтобы я мог изменить цвет текстового поля. Не знал, что перед идентификатором элемента управления нужно ставить «#». Спасибо!
3. Понятно, а для чего нужен символ $? Нужно ли сообщать javascript, что в следующей строке используется метод jQuery?