0

私はばかだったので、私は自分の質問に答えました。:)


クライアント側の検証を実行できるように、jQuery を使用して関数をデフォルトの動作 (および)submit()を防止するフォームにバインドしました。スクリプトは実際にはフォームの送信を行いません (それは別のスクリプトに任せます)。event.preventDefault()return false

ここで、イベントを削除して、デフォルトのフォームの動作に戻したいと考えています。実際に (AJAX を使用せずに) データを別のページ/Web サイトに投稿する必要がありますが、作成したスクリプトを使用して検証したいと考えています。

フォームの HTML を複製して送信することも検討しましたが、それは最後の手段です。

使用してみunbind('submit')ましたが、何もしませんでした。私はそれが実際にデフォルトの動作のバインドも解除すると推測しています。

私に何ができる?デフォルトの動作は、使用されていないだけで、まだフォームにバインドされていますか?

注:検証スクリプトを変更することも、既定の動作を妨げる特定の関数のバインドを解除することもできません。

リクエストに応じてソースコードを入手できますが、ほとんどのコードは無関係であるため、スニペットのみを投稿します (以下を参照)。

function _preventDefaults() {
    //Prevent form from submitting (until we validate it)...
    $('#myform').submit(function(event) {
        event.preventDefault();
        return false;
    });
}
4

3 に答える 3

1

ネイティブ メソッドを使用して、バインドされたイベントをバイパスできます。

$("#myform").get().submit();

または、新しいフォームを作成し、古いフォームから入力をコピーすることもできます。

$("<form></form").attr("action","somepage.php").append($("#myform :input")).submit();

リダイレクトさせているので、古い形式でなくてもかまいません。

于 2013-07-19T03:00:25.753 に答える
0

私はあなたが望むと信じています:

_Form.unbind('submit');

新しいバージョンの jQuery を使用している場合は、次のこともできます。

_Form.off('submit');
于 2013-07-19T02:49:53.333 に答える
0

私はアホです。

$('#myform').find('INPUT,TEXTAREA,BUTTON').attr('disabled', 'yes');

フィールドをグレー表示して、ユーザーが値を変更できないようにしたかった (私はそのような OCD であるため)。ブラウザーが無効になっている入力を送信しないことを完全に忘れていました。

皆様、お時間を無駄にして申し訳ありません。次回は、イベントのバインドを解除するコードを投稿します。これにより、私が見つけたものが表示されます。

編集:さらに悪いことに、その場所にリダイレクトされていたので、フォームが送信されていることを知っていましたaction. gg。

于 2013-07-19T03:11:22.453 に答える