我在下面的代码中构造了一个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 });
});
我开始输入'他'并且自动完成窗口显示'你好'(因为我之前输入了你好)。我选择'hello'然后按Enter键,仍然'a'在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
之类的变量!)
答案 0 :(得分:0)
对于您的主要问题:您应该使用jQuery.val函数而不是jQuery.attr('value')
。
您的代码中的许多其他内容使我感到奇怪或不清楚。我不清楚如何在reloadOnEnter
中使用loadCompleteHandler
。如果包含相应的代码片段会很好。 url
的值似乎也很奇怪。您使用searchOnEnter: false
filterToolbar
reloadOnEnter
选项,但在if(e.keyCode == 13)
中等待'Enter'键。在jQuery(':input[name=field1]').attr('value')
的正文内部,您获得{{1}},然后将相同的值设置回来。为什么呢?
或许你可以在问题的文本中描述一下你想用代码存档的内容吗?