我确定我在这个问题上遗漏了一些非常简单的东西.在将我的头撞到桌子上(字面意思)几天之后,我将自己置于堆栈的怜悯之下:
我在jqgrid中使用jQuery UI Autocomplete作为组合框(我知道!我已经在其他地方寻找解决方案无济于事!).当我通过jqgrid中的onSelectRow事件访问单元格进行编辑时,我希望打开下拉列表.基本上,我想完成这里讨论的内容:
Open jQuery UI ComboBox on focus
并演示在这里:
唯一的区别是我在jqgrid中需要它.我已经尝试了下面的代码,我(错误地)通过会在行聚焦时触发组合框,但组合框不会出现在onSelect事件中的行焦点上.我有一种潜在的怀疑,我只是将以下代码放在错误的位置,但我已经尝试过,我能想到的任何地方:
$("#"+id+"_usr_validation","#list2").bind("focus",function () { this.value = ''; $(this).autocomplete("search",'');
$(function(){ var lastsel; $("#list2").jqgrid({ url: 'PHP_includes/uploadgrid.PHP',datatype: "json",mtype: 'GET',colNames:[ 'User Value','Translated Value','User Validation,],colModel:[ {name:'usr_value',index:'usr_value',sortable:'true',width:60,align:"center",editable:false},{name:'translated_value',index:'translated_value',{name:'usr_validation',index:'usr_validation',editable:true} ],pager: '#pager2',rowNum: 1000,scroll: true,gridview: true,viewrecords: false,height: 'auto',hidegrid: false,autowidth: true,pgbuttons: false,pginput: false,forceFit: true,emptyrecords: "No record was loaded",onSelectRow: function(id){ if(id && id==lastsel){ $("#list2").jqgrid('editRow',id,true,autocomp,'',selectNone); } else { if(id && id!==lastsel){ $("#list2").jqgrid('saveRow',lastsel); $("#list2").jqgrid('editRow',selectNone); lastsel=id; } } },editurl: '/PHP_includes/jqgridCrud.PHP',}); jQuery("#list2").jqgrid('navGrid',"#pager2",{edit:false,search:false,del:false,add:false}) function selectNone(){ $("#list2").jqgrid('resetSelection'); } //this function de-selects all prevIoUsly accessed rows function autocomp(id) { var term2 = $("#list2").jqgrid('getCell','usr_value'); $("#"+id+"_usr_validation","#list2") .autocomplete({ source: function(request,response) { $.ajax({ url: "/PHP_includes/Autocomplete.PHP",dataType: "json",data: { term : request.term,term2 : term2,},success: function(data) { response(data); } }); },minLength: 0,select: function(event,ui) { $("#list2").val(ui.item.id); },}); $("#"+id+"_usr_validation",function () { this.value = ''; $(this).autocomplete("search",''); }); } });