我正在创建一个注册表单,我想在它允许用户提交表单之前对其进行验证并检查用户名和电子邮件的可用性,这样我就不需要一个单独的页面来告诉他们错误并让他们重新开始。
检查可用性的代码是:
function checkUsername() {
$.post('php/availability.php',{username: $('#username').val()}, function(usernamedata){
if(usernamedata.exists){
$("#username").css('background-image','url(images/in-use.png)');
$("#username-use").val("inuse");
}else{
$("#username").css('background-image','none');
$("#username-use").val("free");
} }, 'JSON'); }
检查电子邮件的代码完全相同,除了明显的差异。它检查数据库中匹配的用户名/电子邮件,并根据结果设置隐藏字段的值。默认情况下,隐藏字段都设置为“免费”。
如果用户名或电子邮件设置为“使用”,则该代码应该禁用注册按钮。但是,它似乎有自己的想法,我无法弄清楚它是如何达到最终结果的。
function buttonCheck() {
var username = $("#username-use").val();
var email = $("#email-use").val();
if(username == "free" && email == "free") {
$("#registration-send").attr('disabled','disabled');
}
else {
$("#registration-send").removeAttr('disabled');
} }
它的工作似乎倒退了,当某物“使用”时启用按钮。我尝试过交换东西,但它并没有改变任何东西。
checkUsername()/checkEmail() 和 buttonCheck() 都在其关联输入的 onChange 中一起调用:
<input id="username" name="username" type="text" autocomplete="off" maxlength="100" class="req-string" onChange="checkUsername(); buttonCheck()">