0

tagsInput プラグインに接続されている検索ボックスに実際に入力せずに、クエリを動的に変更する (クエリを削除するか、新しいクエリを入力する) 必要があるjquery tagsInput プラグインを使用しています。

ここでの問題は、最初にバックスペースイベントをトリガーしてから、次にイベントを入力することです。これがコードです。

function triggering_events() {
    $(".tag").each(function() {
        var e = jQuery.Event("keydown");
        e.keyCode = 8;
        e.which = 8;
        $("#input-search_tag").trigger(e); //triggering backspace event
    });
    var input = $("#input-search_tag");
    input.val("food");
    input.trigger(e); //triggering enter event
}

ただし、上記のコードからトリガーされるのはバックスペース イベントのみです。その入力イベントを機能させるにはどうすればよいですか?

誰かが私が犯した間違いを指摘できますか?

ありがとう!

4

2 に答える 2

1

removeTag次のメソッドを使用してaddTag、タグの削除と追加を試すことができます。

function triggering_events() {

    var 
        idInput = 'input-search',
        input = $("#" + idInput);

    $("#"+idInput+"_tagsinput .tag").each(function() {
        var tag = $.trim($(this).find('span:eq(0)').text());
        input.removeTag(tag);
    });

    input.addTag("food");
}

走る

于 2012-09-21T13:47:45.413 に答える
1

ここに問題があります:

$("#input-search_tag").val("food").trigger(e); //triggering enter event

.val()jquery 要素の文字列値を返します。チェーン可能なメソッドではありません。文字列にはメソッドがありませんtrigger

これを 2 つの呼び出しに分割することで修正できます。

var input = $("#input-search_tag");
input.val("food");
input.trigger(e); // triggering enter event

または使用.end()

$("#input-search_tag").val("food").end().trigger(e); //triggering enter event

編集:複数を作成する代わりに1つのイベントを再利用するとともに、すべてをまとめます:

function triggering_events() {
    var e = jQuery.Event("keydown");

    e.which = 8;
    $(".tag").each(function() {
        $("#input-search_tag").trigger(e); // triggering backspace event
    });

    e.which = 13;
    $("#input-search_tag").val("food").end().trigger(e); // triggering enter event
}
于 2012-09-21T12:57:00.693 に答える