2010-12-09 2 views
0

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

Проблема, с которой я сталкиваюсь, заключается в том, что Submit остается отключенным в 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

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

попробовать это

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

это не похоже на работу в IE .... – Micanio 2010-12-09 14:28:01

+1

Я думаю $ («: отправить») атр. («отключено», «отключено»); более корректно из-за синтаксиса XHTML. Кроме того, у вас есть эта строка в вашей функции: «if ($ (this) .val(). Length == 0)», но $ (this) может не использоваться правильно, поэтому идентификатор элемента или что-то подобное может быть передается функции. – Sk8erPeter 2010-12-09 14:30:37

Смежные вопросы