Jquery 在Internet Explorer中禁用提交按钮错误

Jquery 在Internet Explorer中禁用提交按钮错误,jquery,internet-explorer,Jquery,Internet Explorer,我已经创建了一个联系人表单,它有一个禁用的提交按钮,直到所有字段都已填写并生效 我遇到的问题是,即使所有字段都已验证,提交在IE上仍处于禁用状态,因此用户无法发送表单 我尝试了多种方法为submit按钮添加不同的代码,但没有成功 我的代码如下: JQuery $(function() { $(":text").keypress(check_submit).each(function() { check_submit(); }); }); function check_submit() {

我已经创建了一个联系人表单,它有一个禁用的提交按钮,直到所有字段都已填写并生效

我遇到的问题是,即使所有字段都已验证,提交在IE上仍处于禁用状态,因此用户无法发送表单

我尝试了多种方法为submit按钮添加不同的代码,但没有成功

我的代码如下:

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


姓名:


电邮:

地点:

电话:

消息:
试试这个

function check_submit() {
if ($(this).val().length == 0) {
$(":submit").attr("disabled", true);
} else {
$(":submit").removeAttr("disabled");
  }
}

不是指以这种方式调用函数时所需的内容,而是指:

$(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);
}

“提交”按钮仍然处于禁用状态,直到我刷新页面,然后它才能正常工作。知道为什么会这样吗?是的-我得到的错误是:对象不支持这个属性或方法。@Micanio-啊,看到问题了吗,在第40行,char 3上发生了什么事吗?这一行:$(“:text”).each(function()@Micanio-你确定你包含jQuery的
标记是正确的吗?我认为$(“:submit”).attr(“已禁用”,由于XHTML语法,“disabled”);更为正确。此外,函数中有一行:“if($(this.val().length==0)”,但$(this)可能使用不正确,因此可以将元素id或类似内容传递给函数。Nick发现事件连接未按预期工作。我没有:)@Sk8erPeter-这并不更正确,您考虑的是属性,而不是DOM属性,这是一个布尔值。@尼克·克雷弗:好的,谢谢,这意味着$(“:submit”).attr(“disabled”,true);是正确的,但是$(“:submit”).attr(“disabled”,“disabled”);也能正常工作(至少这对我来说是可行的——我不知道在代码的其他部分使用XHTML严格语法是否有关系)。或者,如果我的解决方案在所有浏览器中都不起作用,那么可能是我尝试得不够。你知道关于这方面的任何已知问题吗?@Sk8erPeter-这并不是说它不起作用……它只是没有做你认为的事情,任何非空字符串都是真实的,你可以把
$(“:submit”).attr(“disabled”,“wombats”);
放进去,它也会有同样的效果;)
$(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);
}