3

私が取り組んでいるすべてのフォームには「name="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" がないトップフォームが機能します。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>
4

5 に答える 5

6

これは、送信ボタンに「送信」という名前を付けたためです。これはすでにフォームオブジェクトのプロパティであるため、送信イベントのバインディングを混乱させます。

jQueryドキュメントからこのメモを参照してください:

フォームとその子要素は、submit、length、methodなどのフォームのプロパティと競合する入力名またはIDを使用しないでください。名前の競合は、紛らわしい失敗を引き起こす可能性があります。

送信ボタンの名前を他の名前(「form_submit」など)に変更すると、機能します。

于 2010-11-12T22:28:01.710 に答える
1

ボタンには別の名前を使用する必要があります。「submit」は予約語であり、「submit」という名前の要素を使用すると、実際には jQuery がフォームを送信できなくなります。

http://manicode.blogspot.com/2009/04/form-input-names-with-reserved-words.htmlで回避策を見つけることができます。

于 2009-04-14T23:26:53.227 に答える
0

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

これは私にとってはうまくいきました...送信ではなくクリックしてください。

于 2009-07-10T04:41:43.587 に答える
0

HTMLを変更できない場合(たとえば、zendフォームが非常に賢いため...)

これと同じくらい簡単です(送信する前に、JavaScriptで名前を変更してください):

$('#submit').attr('name', 'stupid_javascript');
于 2011-03-14T16:04:11.057 に答える