Обновление Я предполагаю, что я должен был быстро принять загадку jQuery voodoo. Я заметил, что дважды использую идентификатор «username», и это проблема. второй идентификатор имени пользователя был добавлен на страницу через html-код, который был введен на страницу с php, поэтому я не мог увидеть его в исходном файле сначала.
Я пишу этот код подтверждения jQuery для вашей стороны:
username = $("#username").val();
if (username.length < 5 || username.length > 15 || !username_regex.test(username)) {
error += "invalid username\n";
$(this).find("label[for='username']").css("color", "red");
$("#username").css("background-color", "#ffc9c9").css("border-color", "red"); //this doesn't work
// $("input[id='username']").css("background-color", "#ffc9c9").css("border-color", "red"); //this works
}
и HTML:
<p><label for="username">Username</label><input id="username" type="text" name="username"/></p>
у меня есть еще несколько JQuery/HTML блоков, точно так же, как это выше, пароль, адрес электронной почты, имя и т.д ..
это код проверки является частью обработчика onsubmit, и все остальные блоки работают нормально: когда поле не соответствует критериям проверки, цвет его метки становится красным, а цвет фона его поля ввода превращается в # ffc9c9.
проблема в имени пользователя - это ярлык становится красным, но поле ввода не поворачивается # ffc9c9. Я не вижу никаких оснований для того, чтобы не работать, я использую ту же линию:
$("#*input_field_id*").css("background-color", "#ffc9c9").css("border-color", "red");
для каждого из других блоков и она отлично работает для них.
также видит, что закомментированная линия:
$("input[id='username']").css("background-color", "#ffc9c9").css("border-color", "red");
делает работу и решает мою потребность. но это не решает загадки, и я пытаюсь понять, почему не работает эта линия. также заметить, что я отлажена с поджигатель и получили ожидаемые результаты, например:
$("#username").attr("name"); // = username, as expected
Она сводится к следующему: почему $("input[id='username']")
работает, когда я пытаюсь изменить это CSS, но $("#username")
не будет?
у вас нет дублирующихся идентификаторов в вашем HTML ? – lukaleli
И чего вы пытаетесь достичь этим: $ (this) .find ("label [for = 'username']").css («цвет», «красный»); ? на что это указывает? – lukaleli
@ jimmyweb У меня этот идентификатор только один раз. и указанная вами линия указывает на метку имени пользователя и рисует ее красным – Ziv