问题描述
||
由于某种原因,在输入内容后,我无法弄清楚如何返回输入值。这与该问题有关,如果不识别用户名值,我将无法进行任何验证。我正在运行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>
提交表单之前,我想确保我可以看到输入到输入中的用户名的值。我有一个警报,返回用户名的值,但警报始终不显示任何内容。这是我正在使用的JS代码:
$(document).ready(function(){
var username = $(\"#username\").val();
var parameter = \"action=checkusername&username=\"+username;
$.validator.addMethod(\"checkAvailability\",function(value,element){
$.ajax({
url: \"dbquery.PHP\",type: \"POST\",async: false,data: parameter,success: function(output) {
alert (username);
return true;
}
});
},\"Sorry,this user name is not available\");
// jQuery Validation script
$(\"#signup\").validate( {
rules: {
Username: {
required: true,minlength: 5,checkAvailability: true // remote check for duplicate username
}
}
},messages: {
Username: {
required: \"Enter a username\"
}
},submitHandler: function(form) {
form.submit();
}
});
我是否应该使用val()
以外的方式来获取用户名的值?我很困惑为什么没有给我所需的价值!
解决方法
您是在JavaScript开头硬编码用户名。在addMethod成功调用内完成
$.validator.addMethod(\"checkAvailability\",function(value,element){
var nameAvailable = false;
$.ajax({
url: \"dbquery.php\",type: \"POST\",async: false,data: \"action=checkusername&username=\"+value,success: function(output) {
//server returns whether username is valid or not
//if it is valid set nameAvailable to true like so:
nameAvailable = true;
}
});
return nameAvailable;
});
$(\"#signup\").validate({
username: {
required: true,checkAvailability: true
},messages: {
username: {
required: \"Username is required\",checkAvailability: \"Sorry,this user name is not available\"
}
},submitHandler: function(form) {
form.submit();
}
});
的HTML
<input type=\"text\" id=\"username\" name=\"username\" size=\"20\" class=\"required checkAvailability\" placeholder=\"Username\" />
现在将其放置在您拥有的位置意味着,当页面加载时,它将立即在用户名文本字段中获取值,该值将为空。
编辑:
稍微修改了代码以使其正常工作
编辑:以上代码的jsfiddle
, $ .val()在<input>s
上可以使用。
给我们一个链接?也许我们可以在那里看到它?
另外,如果id确实是用户名而不是一致,则\“ for \”属性应该是用户名。
并且由于您要给$ .ajax一个已经字符串化的字符串,因此请尝试同时添加processData:false