Это использует jQuery 1.6.1 и Validate 1.8.1.
Из-за этой проблемы я ударился головой о стену, и теперь я пытаюсь использовать другой подход, чтобы попытаться решить эту проблему. Мне нужно запросить в базе данных существующие имена пользователей, чтобы кто-нибудь, зарегистрировавшийся, больше не регистрировал это имя.
HTML:
<form class="cmxform" action="register.php" method="post" name="signup" id="signup">
<ul>
<li>
<label for="username">Username: <em>*</em></label>
<input type="text" id="username" name="Username" size="20" class="required" placeholder="Username" />
</li>
</ul>
</form>
На этот раз я пытаюсь использовать удаленную функцию для скрипта проверки:
$("#signup").validate( {
var username = $("#username").val();
rules: {
Username: {
required: true,
minlength: 5,
remote: {
url: "dbquery.php",
type: "GET",
async: false,
data: "action=checkusername&username="+username,
success: function (output) {
return output;
}
}
}
},
messages: {
Username: {
required: "Enter a username",
remote: jQuery.format("Sorry, {0} is not available")
},
},
submitHandler: function(form) {
form.submit();
}
});
Код, который не работает, var username = = $("#uname").val();
. Firebug выдает ошибку missing : after property id
.
Я включил упомянутую выше переменную в validate()
, потому что мне нужно значение ввода только после того, как я что-то в него ввел, а не при загрузке страницы.
Другая проблема, с которой я столкнулся, заключается в том, что удаленное сообщение об ошибке появляется ТОЛЬКО, когда имя пользователя уже существует в базе данных. К сожалению, он показывает, возвращается ли dbquery.php как true
или false
. Если я пробую существующее имя пользователя, оно возвращает false
, затем я переписываю новое имя пользователя, которое возвращает true
, сообщение не исчезает. Точно так же, когда я пишу имя пользователя и оно возвращает true
, я все равно получаю удаленное сообщение об ошибке.
Что я делаю не так?