1

jQuery と編集可能なプラグインを使用して、インライン編集可能なテーブルを作成しています。

これまでのところ問題なく動作しますが、ENTER を押したときにデータベースに送信して保存するだけです。ここで、ボックス間をタブで移動するのに役立つスレッドを見つけましたが、タブを押してもデータを送信しません。

ボックスを切り替えることができる私のコードは次のとおりです。

$('.editScheduleRow').bind('keydown', function(evt) {

    if (evt.keyCode==9) {

        var nextBox='';
        var currentBoxIndex=$(".editScheduleRow").index(this);

        if (currentBoxIndex == ($(".editScheduleRow").length-1)) {
            nextBox=$(".editScheduleRow:first");         //last box, go to first
        } else {
            nextBox=$(".editScheduleRow").eq(currentBoxIndex+1);    //Next box in line
        }

        $(this).find("input").blur();
        $(nextBox).click();  //Go to assigned next box

        return false;           //Suppress normal tab

    };

});

ENTER を使用して送信するには、これを使用します。

$(".editScheduleRow").editable("../../includes/ajax/save-schedule-row.php", {

    "submitdata": function ( value, settings ) {
        return { fieldname: this.getAttribute('fieldname'), rowID: this.getAttribute('id') };

    },

});

提案のあるスレッドも見つけましたが、うまくいきませんでした: jEditable submit on TAB as as ENTER

さらに情報が必要な場合はお知らせください。

4

1 に答える 1

1

私の最初の答えは、jQuery Editable のドキュメントを読むことに基づいていました。これは、同様の名前の jQuery 拡張機能ですが、質問の jEditable とは異なります。正しいライブラリでもう一度試してみましょう。

問題は、タブを押したときに入力ボックスからフォーカスを移動していることですが、フォーカスを入力ボックスから移動すると、内容が保存されません。これを説明するために、これを試してみてください: フィールドの 1 つをクリックして編集し、次にドキュメントの他の場所をクリックします。blur()テーブルの値が表示されます。これは、要素で jQuery 関数を使用してシミュレートしたものです。

この問題を解決するには、(再び) 2 つの方法があります。まず、フィールドがフォーカスを失ったときのプログラムの動作を変更できます。

    [..]
    "submitdata": function ( value, settings ) {
        return { fieldname: this.getAttribute('fieldname'), rowID: this.getAttribute('id') 
    };
    "onblur": "submit";
},
[..]

これには、なぜ機能しないのかを理解するために上で説明した実験を行ったときに、それが保存されることもわかるという効果があります。これはあなたが望むものではないかもしれません。その場合、代わりにぼかしの代わりに送信をトリガーすることを確認できます。

次の行を置き換えます。

    $(this).find("input").blur();

これによって:

    $(this).find("form").submit();

これで、実験によって値が変更されることはなくなりましたが、実行していることの正確なシミュレーションではなくなり、タブを押すと値が変更されます。

于 2012-11-01T13:47:49.643 に答える