2008-10-30 2 views
1

У меня есть страница со многими формами на ней. может быть 1..200. Ни одна из этих форм не имеет кнопок, и они создаются программно. Я использую jquery для отправки всех проверенных форм.Как получить функцию для стрельбы при отправке формы без кнопок

function FakeName() 
    { 

      $("input:checked").parent("form").submit(); 

    } 

Моих формы похожи:

  <form name="FakeForm<%=i%>" action="javascript:void%200" onSubmit="processRow(<%=i%>)" method="post" style="margin:0px;"> 
       <input type="checkbox" name="FakeNameCheck" value="FakeNameCheck"/> 
       <input type="hidden" name="FakeNum" value="<%= FakeNum%>"/> 
       <input type="hidden" name="FakeId" value="<%=FakeIdr%>"/> 
       <input type="hidden" name="FakeAmt" value="<%=FakeAmount%>"/> 
       <input type="hidden" name="FakeTrans" value="FakeTrans"/> 
      </form> 

Примечания: действие установлено на "JavaScript: недействительные% 200", так что он отправляет на поддельную страницу. Я хочу обрабатывать свои собственные публикации в processRow.

OnSubmit никогда не вызывается и поэтому ProcessRow никогда не вызывается.

Очевидно, что все имена функций и переменных были изменены, чтобы защитить свою идентичность: D

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

ответ

2

Обработчик onsubmit намеренно не запускается, когда вы программно представляете форму. Это делается для того, чтобы избежать бесконечной рекурсии, если обработчик события снова запустит событие (и, следовательно, обработчик события будет снова вызван)

Однако, конечно, вы можете позвонить непосредственно функции processRow() вместо вызова .submit() ,

Вам разрешено иметь входные данные вне форм. Одна из идей состоит в том, что <form> не должен быть <form>, если он не предназначен для отправки на сервер через HTML.

+0

да. Думал, что было бы легче сгруппировать все мои необходимые поля в форму, чтобы потом я мог перебирать все формы. Предположим, вместо этого использовать div для этого? У меня будет много FakeForms на странице. – 2008-10-30 14:04:33

0

Посмотрите dispatchEvent и его эквивалент: fireEvent. Это не самая легкая вещь в мире, но я думаю, что это то, что вы ищете.

Я удивлен, что нет библиотеки, которая легко справляется с этим. Прототип (тот, который я использовал больше всего) ближе всего к методу .fire() для элементов.

0

Похоже, я могу быть в состоянии сделать это:

<form name="FakeForm<%=i%>" action="javascript:processRow(<%=i%>)" method="post" style="margin:0px;"> 
           <input type="checkbox" name="FakeNameCheck" value="FakeNameCheck"/> 
           <input type="hidden" name="FakeNum" value="<%= FakeNum%>"/> 
           <input type="hidden" name="FakeId" value="<%=FakeIdr%>"/> 
           <input type="hidden" name="FakeAmt" value="<%=FakeAmount%>"/> 
           <input type="hidden" name="FakeTrans" value="FakeTrans"/> 
         </form> 

Существуют ли какие-либо недостатки в этом?

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