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