JQuery .trigger ('отправить') взлом - PullRequest
3 голосов
/ 08 апреля 2009

Я обнаружил, что, поскольку все формы, над которыми я работаю, имеют кнопку отправки, которая содержит атрибут name = "submit", триггер submit прерывается, когда я нажимаю на ссылку, которая должна инициировать отправку формы .

Кто-нибудь знает, как я могу обойти это.

Код JQuery ниже - это то, что я использую:

$('#login_form :submit').each(
       function()
       {
          var $this = $(this);
          var f = this.form;
          var link = $('<a class="swap_link" href="#">' + $this.val() + '</a>')
             link.click(function()

                {
                   $(f).trigger('submit');
                   return false;
                }
             )
            $this.after(link).css({position:'absolute', top:'-2000px'});
            }
        )

Ценю любую помощь в этом. Спасибо

Привет. проверьте ссылку ниже:

http://www.mr -scraggy.com / test.html

на этой странице вы можете увидеть форму в действии. Верхняя форма, которая не имеет name = "submit" в кнопке отправки, работает. Нижняя форма, которая включает в себя имя = "представить" не. (когда я говорю «работа», форма не подключается к каким-либо сценариям, но вы можете видеть, что ссылка для отправки в верхней форме «что-то»).

см. Также ниже HTML-форму:

<form id="swaplink" name="login" action="/action/login.php" method="post" accept-charset="utf-8" class="clearfix">
<input type="hidden" name="redirecturl" id="redirecturl" value="{$redirecturl}" />
<h2>My Account Login</h2>
<ul id="login_form">
    <li>
        <label for="username">Username:</label>
        <input type="text" name="username" id="username" class="input-text" maxlength="32" />
        </li>
    <li>
    <label for="password">Password:</label>
    <input type="password" name="password" id="password" class="input-text" maxlength="32" />
        </li>
    <li>
    <input type="submit" name="submit" value="Login" />
    </li>
</ul>
    {$failed_message}
</form>

Ответы [ 5 ]

5 голосов
/ 13 ноября 2010

Это потому, что вы дали своей кнопке «Отправить» имя «отправить». Поскольку это уже свойство объекта формы, оно портится с привязкой события submit.

См. Эту заметку из документов jQuery :

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

Измените имя вашей кнопки отправки на что-нибудь еще (например, "form_submit"), и она будет работать.

0 голосов
/ 14 марта 2011

, если вы не можете изменить свой html (например, из-за того, что формы Zend такие умные ...)

это так просто (измените имя с помощью javascript, прежде чем пытаться отправить):

$('#submit').attr('name', 'stupid_javascript');
0 голосов
/ 15 апреля 2009

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

Обходной путь можно найти на http://manicode.blogspot.com/2009/04/form-input-names-with-reserved-words.html

0 голосов
/ 10 июля 2009

$('#yourelementhere').trigger('click');

это сработало для меня ... не отправлять, а нажимать.

0 голосов
/ 08 апреля 2009

Вы должны построить ссылку так:

var link = $("<a />").addClass('swapLink')
           .atrr('href', '#')
           .text( $this.val() )
           .onclick( function() {
             $(f).trigger('submit');
             return false;
            });

Также убедитесь, что вы вставили ссылку в DOM, и что f действительно является ссылкой на форму.

Вы также можете попробовать:

$(f).submit();

Будет полезно, если вы разместите HTML-код, используемый для вашей формы.

...