IE7 - <кнопкa> не отправляет форму
Как я могу сделать тег в IE7 представить форму, выполняя все проверки формы, которые устанавливаются в форме?
если я просто делаю document.forms[0].submit();
, он отправляет, но игнорирует проверку формы.
Edit:
Все любят рассказывать мне использовать тег ввода... Это убьет форму, но не будет работать в моей ситуации, поэтому я спросил о теге кнопки...
<form action="my/script" onsubmit="return ValidateFunc();">
<button> <img src="image/do_this_with_input_tag.png"> Some Text </button>
</form>
Ответы
Ответ 1
Я использовал jquery для отправки кнопки. Если я использую прямой javascript, если обходит настройку проверки. Jquery form submit запускает проверку перед отправкой.
После дополнительных исследований тег, даже с типом = "отправить", не может отправить форму в более старую версию IE.
Ответ 2
Сначала введите кнопку с типом submit как
<input type="submit" value="submit" />
В теге формы включите событие onsubmit() как
<form
action="/path/to/server/side/script"
name="testform"
onsubmit="return validate()"
>
Функция validate()
должна возвращать true
, если проверка формы проходит или false
, если проверка не выполняется.
например.
function validate(){
if(...){//valid
return true;
}else{//not valid
return false;
}
}
EDIT:
Всегда указывайте тип кнопки. Если не указано, в IE по умолчанию используется "button", а в Chrome и Firefox по умолчанию "отправить".
<form action="my/script" onsubmit="return ValidateFunc();">
<button type="submit"> <img src="image/do_this_with_input_tag.png"> Some Text </button>
</form>
И в будущем включите в свой вопрос более подробную информацию, если вы хотите получить правильные ответы.
Ответ 3
Я решил это просто, добавив type="submit"
к кнопке.
<button>Submit</button>
не отправлялся в IE7.
<button type="submit">Submit</button>
отправляется в IE7.
Ответ 4
Я предполагаю, что проверка только распознает событие "отправить" из кнопки "отправить".
Вместо входа "button" следует использовать вход "submit". Тогда механизм проверки сможет перехватить событие отправки. вы можете вызвать form.submit в функции validation.submit.
Здесь код:
<form id="theForm">
...
<input type="submit" value="submitMe"/>
</form>
в Javascript:
$('#theForm').validate({
...
submitHandler: function() {
// do some trick here
...
// submit the form
$('#theForm').submit();
}
});
Ответ 5
Я использую (фиктивное/не видимое) поле ввода внутри формы, помещенное абсолютным с этим css:
<input class="dummy" type="submit" />
.dummy {
position:absolute;
bottom:0px;
right:0px;
padding:0px;
margin:0px;
border:0px;
font-size:0px;
line-height:0px;
}
Просто избегайте использования дисплея: нет или видимость: скрытая или ширина: 0px и т.д. Используйте только этот css, который я предоставил.
Ответ 6
У меня была та же проблема с IE11 с кнопкой отправки в другой форме:
<form id="form1">
...
</form>
<form id="form2">
...
<button type="submit" form="form1">OLA KE ASE</button>
...
</form>
Вы можете решить это usign javascript, я сделал это с jQuery на общем пути.
$(document).ready(function() {
$('button[type=submit]').on('click', function() {
if ($(this).attr('form') != '') {
document.getElementById($(this).attr('form')).submit();
}
});
});