2015-04-26 3 views
5

У меня есть из скелета, как показано ниже.Submit() не работает

@using (Html.BeginForm("Preapprove", "Preapproval", FormMethod.Post, new { name = "form1", id = "form1", enctype = "multipart/form-data", @class = "form-horizontal" })) 
{ 
    ...... 
<input name="submit" type="button" value="Submit" id="Sub" class="btn btn-success" style="margin-left:950px" />      


} 

И в Jquery им отправить эту форму на мыши даже на кнопку ид Sub

$(document).ready(function() { 
      $('#Sub').click(function (e) { 
       var error_flag = 0; 

       if (d_row_count == 1) { 
        error_flag = 1; 
       } 
       else if (d_row_count > 1) { 
        if (code == null || code.trim() == '') { 
         error_flag = 1; 

        } 
        else if (s_row_count == 1) { 
         error_flag = 1; 
        } 
       } 
       if (error_flag != 1) { 
        alert("submitting"); 
        $("#form1").submit(); 
       } 
      }); 

Когда все проверки прошло error_flag будет 0, и он попадет в условие if и даст мне предупреждение «Отправка», но форма не будет отправлена.

Все, что им недостает кода?

+0

Что означает ** console ** сказать? –

+0

он дает предупреждение «отправление» и остается на странице. Нет других сообщений – Sachu

+0

настроить jsfiddle – Tushar

ответ

17

Вам нужно изменить название кнопки ввода «отправить» на что-то еще. Наличие элемента с именем «submit» приводит к тому, что метод отправки формы больше не работает, что означает, что форма не может быть отправлена ​​через JavaScript (по крайней мере, не легко).

Причина этого в том, что для элемента ввода с именем «submit» можно указать его имя: form1.submit. То есть элемент ввода добавляется как свойство объекта формы, а имя свойства - имя входного элемента. Это в основном скрывает функцию submit, которая находится на прототипе формы.


Я говорю «не так легко» выше, поскольку следующие до сих пор работает (по крайней мере, в Firefox):

HTMLFormElement.prototype.submit.call($("#form1")[0]); 
+0

hmmm..its strange – Sachu

+0

Я потратил полчаса, пытаясь понять, что случилось с моей формой. Это решило проблему. Спасибо! –

+0

Отличные работы для меня :) – daniyalahmad

0

В качестве альтернативы, вы можете захватить родной представить событие в форме, а затем центрировать JavaScript код вокруг метода отправки формы, а не событие щелчка кнопки.

Кнопка должна иметь тип submit (нажав кнопку, которая имеет type=submit, естественно запускает событие).

<input name="submit" type="submit" value="Submit" id="Sub" class="btn btn-success" style="margin-left:950px" /> 

А затем для вашего JavaScript.

$(document).ready(function() { 
    $("#form1").submit(function (e) { 

     if (d_row_count == 1) { 
      return; 
     } 
     else if (d_row_count > 1) { 
      if (code == null || code.trim() == '') { 
       return; 

      } 
      else if (s_row_count == 1) { 
       return; 
      } 
     } 

     // Thre were no errors! 
     alert("submitting"); 

     // If you want to override the form submit method completely, use... 
     // e.preventDefault(); 

    }); 
});