9

ajaxと組み合わせてフォームを使用する私たちのほとんどは、ユーザーによって送信された入力が後のセッションでブラウザーによって保存/提案されないことにおそらく気づいたでしょう。これは、「サインイン」ページに関しては失敗です。ブラウザは通常、ユーザー名/パスワードを保存することを提案します。これは非常に便利ですが、ajaxフォームの送信を使用すると....まあ、これは起こりません。

私はここでこの質問を2回見ましたが、まだ答えがありません。頼まれてから約9ヶ月が経ちましたが、この辺りには頭のいい人がたくさんいると思います。だから....私はこの質問を復活させることにしました。

これを解決するために何ができるでしょうか?どういうわけかブラウザをだますことができますか?

私たち全員が使用できる実用的なソリューションがあればいいのにと思うので、私はこれについて前後に取り組んでいきたいと思っています。

slashingweaponからの回答に基づく最終解決策(Thanks Man!)

HTML-カスタムボタンを使用して送信します。フォームの「アクション」や「メソッド」は使用せず、ajaxのみを使用します。

<form id="signin">

    <label for="username">Username</label>
    <input type="text" id="username" name="username" />

    <label for="password">Password</label>
    <input type="password" id="password"  name="password" />

    //Custom Styled Submit Button
    <img id="submit" class="form_button" src="btn_txt_sign_in.png" alt="Sign In" tabindex="3" />

    //Hidden Standard Form Submit Button
    <input id='trigger' type='submit' style='display:none;' />

</form>

JQuery

// Bind a click to the Custom Submit Button
$('#submit').click( function() {
    //Trigger a Click on the Hidden Standard Form Submit 
    $('#trigger').click();
});

// Detect when the form attempts to be submitted
$('#signin').submit( function(e){
    // Prevent Standard Form Submission
    e.preventDefault();
    // Perform Function containing Ajax Submission instead
    submit_signin();
});

// Ajax Submission
function submit_signin() {
    //My Ajax Call....
}
4

1 に答える 1

8

送信タイプのボタンをクリックすると、同封のフォームが送信されます。ボタンのクリックイベントの代わりに送信イベントを処理することを選択できます。次に例を示します。

$('#demoForm').submit(function(evt) {
    evt.preventDefault();
    var data = $(this).serialize();
    alert(data);
});​

あなたのためのフィドルもあります。

後のイベントをキャッチすることで、少なくとも一部のブラウザーが将来の自動入力のためにフォームデータを保存できるようになります。

于 2012-11-27T18:38:42.247 に答える