JQGrid 4.3.0、Jquery 1.6.2、およびJQuery UI 1.8.16を実装すると、インライン編集で問題が発生しました。インライン編集がアクティブになると、一部の要素にオートコンプリートが割り当てられます。インライン編集がキャンセルまたは保存された場合、オートコンプリートが常に消えるわけではありません(テキストをダブルクリックして削除を押し、次にエスケープを押して行編集を終了することでテキストを選択します)。行が編集モードで考慮されなくなったときに、オートコンプリートコントロールを編集モードのままにしておきます。
おそらく、初期化に問題があるかどうか、または「afterrestorefunc」後のイベントでフィールドを「元の」状態に戻すことができることを知っているかどうかを教えてください。JQGrid行にデータとして表示されている元の状態。
行を閉じた後、.remove()および.empty()でDOMを削除しようとしました。
...
"afterrestorefunc": function(){
$('.ui-autocomplete-input').remove(); }
...
ただし、データや編集のために行をシリアル化するときにjqgridがセルを見つけることができず、その行のデータをもう一度表示できるようにするには、jqgridだけでなく、ページを更新する必要があるなど、他の問題が発生します。 。
要素のオートコンプリート機能は、行をダブルクリックすると作成されます。
function CreateCustomSearchElement(value, options, selectiontype) {
...
var el;
el = document.createElement("input");
...
$(el).autocomplete({
source: function (request, response) {
$.ajax({
url: '<%=ResolveUrl("~/Services/AutoCompleteService.asmx/GetAutoCompleteResponse") %>',
data: "{ 'prefixText': '" + request.term + "', 'contextKey': '" + options.name + "'}",
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
success: function (data) {
response($.map(data.d, function (item) {
return {
label: Trim(item),
value: Trim(item),
searchVal: Trim(item)
}
}))
}
});
},
select: function (e, item) {
//Select is on the event of selection where the value and label have already been determined.
},
minLength: 1,
change: function (event, ui) {
//if the active element was not the search button
//...
}
}).keyup(function (e) {
if (e.keyCode == 8 || e.keyCode == 46) {
//If the user hits backspace or delete, check the value of the textbox before setting the searchValue
//...
}
}).keydown(function (e) {
//if keycode is enter key and there is a value, you need to validate the data through select or change(onblur)
if (e.keyCode == '13' && ($(el).val())) {
return false;
}
if (e.keyCode == '220') { return false }
});
}
その他の情報源: http ://www.trirand.com/jqgridwiki/doku.php?id = wiki:inline_editing
http://api.jqueryui.com/autocomplete/
更新: 要素がフォーカスされているときにオートコンプリートを作成し、オンブラーのときにそれを削除しようとしました。それでも問題は解決しませんでした。オートコンプリートドロップダウンをトリガーする必要があるようです。