現在、私はテキスト入力の直前に隠しフィールドを持つHTMLフォームを持っています。簡略化されたバージョンは次のとおりです。jQuery UIオートコンプリート(隠しIDフィールド)
<form>
<input type="hidden" name="key" id="key" />
<input type="text" name="account" id="account" />
<input type="button" value="Submit" />
</form>
テキスト入力は、jQuery UIオートコンプリートで装飾されています。
$("#account").click(function() {
$(this).prev().val('');
$(this).val('');
}).autocomplete({
source: function (request, response) {
$.ajax({
url: "AJAX.asmx/GetAccounts",
data: "{ 'Search': '" + request.term + "' }",
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
dataFilter: function (data) { return data; },
success: function (data) {
response($.map(data.d, function (item) {
return {
value: item.Value,
key: item.Key
}
}))
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus + ": " + errorThrown);
}
});
},
select: function (event, ui) {
$(this).prev().val(ui.item.key);
},
change: function (event, ui) {
if ($(this).prev().val() == '') {
$(this).val('');
}
}
});
上記のスクリプトは、ユーザーが情報をコピーしてそれに貼り付ける場合を除いて、完全に機能します。ほとんどのユーザーはコピー&ペーストし、AJAXアカウントの検索が完了する前に送信します。ユーザーは、ドロップダウンから結果を選択するためにスクリプトにスクリプトが必要であることを知らない場合、隠しフィールドにデータが入力されません。しかし、ほとんどのユーザーは気楽にしており、最小限のクリックで操作を行いたいと思っています。
1つの結果を持つペーストを傍受するにはどうすればよいですか?ユーザーが送信ボタンをクリックする前にこれを行うにはどうすればよいですか?
+1あなたのコードはちょうどオートコンプリートの仕事で私を助けました:-) – PhilPursglove