3

jQuery Autocompleteを使用して製品検索を行っています。次のコードを使用して、リストからの選択を強制しています。

$(".force-selection").blur(function(e) {
  var value = $(this).val();
  //check if the input's value matches the selected item
  alert($(this).val());
  alert($(this).data('selected-item'));
  if(value != $(this).data('selected-item')) {
    //they don't, the user must have typed something else
    $(this)
      .val('') //clear the input's text
      .data('selected-item', ''); //clear the selected item
  }
});

上記のコードは、2 つのアラート ステートメントが削除された場合にのみ機能します。いくつかのアラート ステートメントの存在だけに基づいて動作が変化するのはなぜですか?

4

2 に答える 2

2

ぼかしイベントの代わりにオートコンプリート変更イベントを使用するように切り替えてみてください。

  • initオートコンプリートを作成するときのオプションとして:

    $(".selector").autocomplete({
       change: function(event, ui) { ... }
    });
    
  • または、次のタイプで変更イベントにバインドします: autocompletechange。

    $(".selector").bind("autocompletechange", function(event, ui) {
       ...
    });
    
于 2012-07-25T17:34:38.327 に答える
1

いくつかの問題が原因である可能性があります。

Internet Explorer を使用している場合、alert作業中のフィールドで「blur」イベントが発生します。サンプル コードでは、問題が発生する理由は明らかです。それ以外の場合は、競合状態の問題が発生している可能性があります。

IE でこのフィドルをチェックしてください: http://jsfiddle.net/NsfKT/

于 2012-07-25T17:34:48.260 に答える