我创建了一个联系表单,其中包含已禁用的提交按钮,直到所有字段都已填写并且已被填空。
我遇到的问题是即使所有字段都经过验证,提交仍会在IE上停用,因此用户无法发送表单。
我尝试了多种方法为提交按钮添加不同的代码,但没有成功。
我的代码如下:
JQuery的
$(function() {
$(":text").keypress(check_submit).each(function() {
check_submit();
});
});
function check_submit() {
if ($(this).val().length == 0) {
$(":submit").attr("disabled", true);
} else {
$(":submit").attr("disabled", false);
}
}
HTML
<form method="post" action="contactengine.php" id="commentForm">
<label for="Name" id="Name">Name:</label>
<input type="text" name="Name" class="required"/><br /><br />
<label for="Email" id="Email">Email:</label>
<input type="text" name="Email" class="required"/><br /><br />
<label for="Location" id="Location">Location:</label>
<input type="text" name="Location" class="required"/><br /><br />
<label for="Phone" id="Phone">Tel No:</label>
<input type="text" name="Phone" class="required"/><br /><br />
<label for="Message" id="Message">Message:</label><br />
<textarea name="Message" rows="20" cols="40" class="required"></textarea>
<input type="submit" name="submit" value="Submit" class="submit_btn" />
</form>
答案 0 :(得分:2)
this
并不是指你想要的东西,而应该是:
$(function() {
$(":text").keypress(check_submit).each(check_submit);
});
function check_submit() {
$(":submit").attr("disabled", $(this).val().length == 0);
}
...但是整个方法都存在缺陷,因为在任何填写的字段中验证都会启用提交,而是需要循环查看任何是否为空,而不仅仅是最后一个使用按键,如下:
$(function() {
$(":text").bind("keyup change", check_submit).change();
});
function check_submit() {
var anyEmpty = false;
$(":text").each(function() {
if($(this).val().length==0) { anyEmpty = true; return false; }
});
$(":submit").attr("disabled", anyEmpty);
}
答案 1 :(得分:0)
试试这个
function check_submit() {
if ($(this).val().length == 0) {
$(":submit").attr("disabled", true);
} else {
$(":submit").removeAttr("disabled");
}
}