0

ページには、ユーザーが変更できるかなりの数の入力要素があります。フォームを送信したくありません。ユーザーがいずれかの要素内の値を変更した後、データベースの値を変更したいだけです。

現在、フォーカスアウトを各入力にバインドして実験しています。これは通常行われている方法ですか(Facebookなど)?

    $('input').focusout(function() {
    var current_val = $(this).val();
    var preset_val = $(this).attr('rel');//attribute set with original value
    if (current_val !== preset_val) {
                alert ('Value changed.');//where I would post to php page to update database
            }
    });"
4

1 に答える 1

1

「通常行われる」方法は、ユーザーがボタンをクリックして変更を保存またはコミットするまで待機することです。各変更を更新する場合は、そのことをユーザーに明確に伝える必要があります。

使用する適切なイベントは、変更をどの程度積極的に取得したいかによって決まります。キーストロークごとの更新の場合、入力、選択、およびラジオ/チェックボックスkeyupに適しています。またはのclickほうが積極的ではありません。blurchange

可能性のある変更を積極的に取得する方法の 1 つは、フォーム要素自体にaclickと aを追加することです。keyupこれにより、すべての要素にリスナーを追加するオーバーヘッドも節約されます。フォームでイベントが発生するたびに、a) 元のターゲットを確認するか、b) フォーム全体を ajax するか、c) すべての要素をループして変更を検出し、変更されたフィールドのみを ajax することができます。

onbeforeuploadウィンドウが閉じられた場合にフォームの最終チェックを行うためにも使用できますが、それはおそらく少しハイパーすぎるでしょう.

ドキュメンテーション

于 2013-03-11T15:15:27.593 に答える