下面的代码(jQuery)最初设计(我不是这段代码的原作者,btw)来检查表单中的所有输入字段,如果有任何空输入则禁用提交按钮:
$(document).ready(function() {
$form = $('#form1'); // cache
$form.find(':input[type="submit"]').prop('disabled', true); // disable submit btn
$form.find(':input').change(function() { // monitor all inputs for changes
var disable = false;
$form.find(':input').not('[type="submit"]').each(function(i, el) { // test all inputs for values
if ($.trim(el.value) === '' || pass <= 1 || name_check === 'no') {
disable = true; // disable submit if any of them are still blank
}
});
$form.find(':input[type="submit"]').prop('disabled',disable);
});
});
需要注意的事项:我的表单名称为'form1',var pass功能正常(密码强度测试的一部分与问题的根目录无关,我相信),var name_check将被解释在下面的代码的其他部分。现在这个小代码可以解决这个问题,如果我没有使用其他代码组合使用jQuery和AJAX来查找我的数据库中是否存在'username'(我的表单的许多输入之一)。检查用户名可用性的代码如下所示(再次,我不是这个的原始作者):
$(document).ready(function()
{
//<!---------------------------------+
// Below code developed by Roshan Bhattarai
// Visit http://roshanbh.com.np for this script and more.
// This notice MUST stay intact for legal use
// --------------------------------->
$("#username").blur(function()
{
//remove all the class add the messagebox classes and start fading
$("#msgbox").removeClass().addClass('messagebox').text('Checking...').fadeIn("slow");
//check the username exists or not from ajax
$.post("user_availability.php",{ username:$(this).val() } ,function(data)
{
$('#username').change(function() {
name_check = data;
});
if(data=='no') //if username not available
{
$("#msgbox").fadeTo(200,0.1,function() //start fading the messagebox
{
//add message and change the class of the box and start fading
$(this).html('This User name Already exists').addClass('messageboxerror').fadeTo(900,1);
});
$('#form1').find(':input[type="submit"]').prop('disabled', true);
}
else
{
$("#msgbox").fadeTo(200,0.1,function() //start fading the messagebox
{
//add message and change the class of the box and start fading
$(this).html('Username available to register').addClass('messageboxok').fadeTo(900,1);
});
}
});
});
//<!----- Bhattarai's code ends here
});
就在那时,所以var name_check保存了'data'字符串yes或no,它取自user_availability.php(这也是完全正常的,与问题无关)。现在我们已经了解了我们正在处理的内容,问题是当我浏览表单(测试它)时,无论用户名是否可用,一旦用户填写了所有输入字段,就会启用提交按钮。密码足够“强大”。似乎var name_check的值没有响应,当用户更改数据即用户名时,代码似乎按原计划运行(如果用户名不可用,则提交按钮被禁用,密码不够强,以及如果用户填写了所有输入字段)。我尝试了一些不同的东西,但我们在这里看到的代码与我得到的代码一样接近。我很确定这只是一件简单的事情,但如果用户在首次运行表单时输入不可用的用户名,我似乎无法使其正常工作。有任何想法吗?感谢您花时间阅读我的问题!