Прекрасное название, которое у вас есть, кстати.
Похоже, что вы новичок в JavaScript. Позвольте мне дать вам несколько указателей. Во-первых, вы должны попытаться уменьшить количество запросов, запрашиваемых браузером для элемента. С jQuery все, что вам нужно сделать, это сохранить выбранный элемент в переменной. Мне лично нравится добавлять мои переменные элемента в $, поэтому я знаю, что есть элементы jQuery.
//too many selections
$('element').foo(); //query 1
$('element').bar(); //query 2
$('element').baz(); //query 3
//better
$element = $('element'); //query 1
$element.foo();
$element.bar();
$element.baz();
Во-вторых, вы всегда должны держать свою {в той же строке, что и начало вашего блока. На большинстве языков это не имеет значения, и во многих случаях он будет работать на JavaScript, но из-за того, что вставка с запятой - лучшая, чтобы сохранить вашу {в той же строке.
//one example of why this is bad
return
{
"foo": "bar"
};
//The above actually becomes
return;
{
"foo": "bar"
};
//should have actually been
return {
"foo": "bar"
};
Последнее, что я заметил, это то, что ваш javascript фокусирует каждый вход при нажатии соответствующей метки. Это можно сделать без JavaScript. Все, что вам нужно сделать, это добавить атрибут for к вашим ярлыкам. Они должны быть установлены на идентификатор соответствующего входа.
<!-- from this -->
<label id="passwordLabel">Password</label>
<input id="password" type="password">
<!-- to this -->
<label id="passwordLabel" for="password">Password</label>
<input id="password" type="password">
В любом случае при условии, что вы исправили свой html, следующее должно сделать трюк.
//Wait for the page to load
$(function() {
var $passwordLabel, $confirmpasswordLabel, $password, $confirmpassword;
//Pre select the form elements
$passwordLabel = $("#passwordLabel");
$password = $("#password");
$confirmpasswordLabel = $("#confirmpasswordLabel");
$confirmpassword = $("#confirmpassword");
//bind events for the password input
$password.focus(function() {
//on focus hide the label
$passwordLabel.hide();
});
$password.blur(function() {
if(!$password.val()) {
//if the input is empty then restore the label on blur
$passwordLabel.show();
}
});
//bind events for the confirm password input
$confirmpassword.focus(function() {
//on focus hide the label
$confirmpasswordLabel.hide();
});
$confirmpassword.blur(function() {
if(!$confirmpassword.val()) {
//if the input is empty then restore the label on blur
$confirmpasswordLabel.show();
}
});
});
Если вы хотите увидеть какой-то рабочий код, который я сделал вам jsFiddle пример, приведенный выше, и некоторые входы выборки: http://jsfiddle.net/wef85/8/
Что вы ожидаете от случившегося, что на самом деле происходит, и какие сообщения об ошибках вы получаете (если есть)? – bkconrad
вам нужно быть более конкретным, чем * он не работает *. Что не работает? Синтаксис поддерживается в jquery 1.6 и 1.7. – Cheeso
. Создайте демо на http://jsfiddle.net/, он поддерживает обе версии jQuery, которые вы используете. –