【发布时间】:2011-04-08 09:57:00
【问题描述】:
我在下面的代码中构建了一个 jqGrid:
function radio(value, options, rowObject){
var radio = '<input type="radio" value=' + value + ' name="radioid" />';
return radio;
}
function reloadOnEnter(){
jQuery(':input[name=field1]').keyup(function(e){
if(e.keyCode == 13){
var fieldValue = jQuery(':input[name=field1]').attr('value');
jQuery(':input[name=field1]').attr('value', fieldValue);
jQuery("#listTable").jqGrid().trigger("reloadGrid");
}
});
}
jQuery(function(){
jQuery("#listTable").jqGrid({
url: '$content.getURI("myURI")' + '?userId=$userId&pageNo=0&locale=' + '$locale',
datatype: 'json',
mtype: 'POST',
colNames:['column1', 'column2', 'column3', 'column4', 'column5'],
colModel :[
{name:'name', index:'field', width:'8%', search:false, align:'center', formatter: radio, editable:false, sortable: false, resizable:false},
{name:'name1', index:'field1', width:'23%', sortable: false, resizable:false},
{name:'name2', index:'field2', width:'23%', sortable: false, resizable:false},
{name:'name3', index:'field3', width:'23%', sortable: false, resizable:false},
{name:'name4', index:'field4', width:'23%', sortable: false, resizable:false}
],
width:'768',
height: 500,
pager: '#pagerDiv',
gridview: true,
rowNum: $rowNr,
rowTotal: 500,
sortorder: 'desc',
viewrecords: true,
loadComplete: loadCompleteHandler,
ignoreCase: true
});
});
jQuery(function(){
jQuery("#listTable").jqGrid('filterToolbar',{
stringResult: true,
searchOnEnter: false });
});
我开始输入“he”,自动完成窗口显示“hello”(因为我之前输入了 hello)。我选择“你好”并按回车键,仍然在 ajax 请求中提交了“他”。
我的 reloadOnEnter 函数由 loadCompleteHandler 调用。有趣的是,当我查询搜索字段 (field1) 时,值是选定的值,但请求中只发送了键入的值。我想发送选定的值。我怎样才能做到这一点?
编辑:
loadCompleteHandler 看起来像这样:
function loadCompleteHandler(){
reloadOnEnter();
jQuery("#listTable").jqGrid('setGridHeight', Math.min(500,parseInt(jQuery(".ui-jqgrid-btable").css('height'))));
}
(我使用 Apache Velocity 作为模板引擎!这就是为什么我在 javascript 代码中有像 $variable 这样的变量!)
【问题讨论】:
-
您写过关于自动完成的文章。您在代码中的哪个位置将
field1绑定到 jQuery UI 自动完成功能? -
@Oleg:我可能用错了正确的词,当我说自动完成时,我指的是 Firefox 功能,当您单击它时会显示该字段的先前输入值列表(什么是这个名字?!?)。我没有使用 jQuery 自动完成功能!