2016-08-31 44 views
0

私はフォームを持っており、複数のjqueryオートコンプリートを持つことができます。フォームが送信されると、私はオートコンプリートで選択した値を取得し、その値を隠しテキストフィールドにダンプしてサーバーに送信します。私はこれを行う方法に関する情報を見つけることはできないようです。私のコードは以下の通りで、クラ​​スオートコンプリートを使ってすべてのテキストフィールドにバインドします。これに関するアイデア?jqueryオートコンプリートの選択値を取得

$(".autocomplete").autocomplete({ 
      autoFocus: true, 
      source: function(request, response) { 
       $.ajax({ 
        url: "@Url.Action("SearchEmployees", "ProjectBase")", 
        minLength: 3, 
        dataType: "json", 
        type: "GET", 
        data: { term: request.term }, 
        success: function(data) { 
         response($.map(data, function(item) { 
          return { 
           label: item.Fullname, 
           value: item.EmployeeId 
          }; 
         })); 
        }, 
        error: function(xhr, textStatus, errorThrown) { 
         alert("error: " + errorThrown); 
        } 
       }); 
      }, 
      select: function(event, ui) { 
       event.preventDefault(); 
       $(this).val(ui.item.label); 
      }, 
      change: function (event, ui) { 
       alert("change: " + (ui.item ? ui.item.label : "<no item>")); 
      } 
     }); 

答えて

1

あなたはFormData.append()FormDataオブジェクトへ.autocomplete("instance").selectedItem.label.valueを追加する.autocomplete要素を、反復するsubmitイベント、.each()を使用することができます。 $.post()FormDataサーバーへのオブジェクト。 instance()

$("form").on("submit", function(e) { 
    e.preventDefault(); 
    var data = new FormData(); 
    $(".autocomplete").each(function(index, selected) { 
    var curr = $(this).autocomplete("instance").selectedItem; 
    data.append(curr.label, curr.value); 
    }); 
    $.post("/path/to/server", data); 
}) 
+0

ゲスト271314さんに感謝しますが、フルネームのみを取得します。私は従業員でなければならない価値が必要です。もしそれが明確でないなら、謝罪してください。 –

+0

_ "私はemployeeidでなければならない値が必要です" _ 'select'イベントハンドラ' $(this)に ​​' 'の' .value'を 'ui.item.label'に設定しました。 .val(ui.item.label); '。 '' '.value'を' ui.item.value'に設定してください – guest271314

+0

あなたには間違いありませんが、従業員のIDを表示するオートコンプリートのデフォルトの動作を妨げるものがあります。すべての正直なところで私は以前あなたのソリューションに似た何かを試してみました。オートコンプリートが選択されたemployeeidをどのようにストアするかはわかりません。私の気持ちは、オートコンプリートウィジェットのselectイベントで、従業員IDを隠しフィールドなどに追加する必要があるということです。 –

関連する問題