Отключить кнопку «Отправить» в Internet Explorer - PullRequest
0 голосов
/ 09 декабря 2010

Я создал контактную форму с отключенной кнопкой отправки, пока все поля не будут заполнены и проверены.

Проблема, с которой я столкнулся, заключается в том, что «Отправить» в 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 ]

2 голосов
/ 09 декабря 2010

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);
}
0 голосов
/ 09 декабря 2010

попробуйте

function check_submit() {
if ($(this).val().length == 0) {
$(":submit").attr("disabled", true);
} else {
$(":submit").removeAttr("disabled");
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...