jQuery オートコンプリート (UI 1.6rc2) が正常に動作しており、ユーザーがアイテムを選択すると、非表示のフォームの値が関連付けられた ID で更新されます。入力したテキストがオートコンプリート リストの結果と一致しない場合、非表示のフォームの値を「0」に設定するにはどうすればよいですか? この場合、新しいエントリを作成します。
6 に答える
オートコンプリート機能でこれを行いました:
change: function(event, ui){
$(this).next("input[id^=person_id]").val('');
return false;
ユーザーがオプションを選択し、非表示の入力にアイテム ID が入力された後、表示されている入力に変更が発生すると、非表示の入力値がクリアされます。魔法のように動作します!
オートコンプリートで「検索」オプションを使用することもできます。
search: function(event, ui){
$(this).next("input[id^=person_id]").val('');
}
うまくいくようです。delay と minlength の後にトリガーされますが、minlength=0 に設定した場合はうまくクリアされます。
私は同じ問題で立ち往生しています...値が一致しないときに発生するイベントはないようです...しかし、いくつかの回避策が見つかったようです...
このスレッドの返信からのザビエルによる:
selected: function() {
if(listItems.filter(”.” + CLASSES.ACTIVE)[0]){
return data && data[ listItems.filter("." + CLASSES.ACTIVE)[0].index ];
} else {
if (options.notFound){
options.notFound();
}
}
}
それは私が考える最善の解決策ではありません...他のアイデアはありますか?ええ、私はこの特定のソリューションをどのように利用できるかを解決しませんでした:(
ああ、これらすべてのイベントを超える方法を見つけたと思います...単純に、これをextraParams
オートコンプリートに送信された他のパラメータとともに追加します
extraParams: {
x: function(){ $("#targetField").val(''); }
}
これは、リクエストの送信中にフィールドを空にするだけで、結果が見つからないか、何も選択されておらず、新しいカスタム値が入力された場合、空のままになります...
ここのコメントスレッドによると、それは可能ではないようです。入力した値をデータベースと照合して、存在しない場合は新しい値を作成するだけだと思います。
$("#txtSearchProvider").autocomplete("../WebServices/PageMethods/AutoComplete.aspx",
{
minChars: 3,
formatItem: function(data, i, n, value) {
return value.split("-z-")[0];
},
formatResult: function(data, value)
{
return value.split("-z-")[0];
}
}
);
$("#txtSearchProvider").result(function(event, data, formatted) {
$("#txtSearchProviderHidden").val(data[0].split("-z-")[1]);
});
からの応答: ../WebServices/PageMethods/AutoComplete.aspx
データ 1、Corp-z-29310 データ 2、Almazan & Barbara、LLP-z-35745 Dos Santos Santos-z-36327 Calzano & Salzano-z-39295