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

时间:2010-12-09 14:13:54

标签: jquery internet-explorer

我创建了一个联系表单,其中包含已禁用的提交按钮,直到所有字段都已填写并且已被填空。

我遇到的问题是即使所有字段都经过验证,提交仍会在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>

2 个答案:

答案 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");
  }
}