2012-02-25 69 views
0

的POSTDATA现在我有执行某种逻辑,并产生一个字符串变量的jqGrid函数高于此postData: { search: function() { return $("#search").val(); },},JavaScript变量成的jqGrid

我然后有jQuery函数。现在,我只是把这个变量和设置搜索元素的值是这样的:

$("#startSearch").click(function() { 

    $("#search").val(searchVal); 

    $("#grid").trigger("reloadGrid"); 

}); 

这工作,但我跳以不同的方式做到这一点。我只想将我的jQuery函数生成的seachVal变量传递给postdata。

我试过这样,但它不工作POSTDATA:{ search: function() { return searchVal; },},

我收到说没有定义searchVal错误。我确信searchVal变量是全局变量,但它仍然不起作用。

这是可能的还是我只是看着这个错误?

任何帮助将是伟大的。

感谢

UPDATE:

下面是一个剥离下来的网页版本:

<fieldset> 
<input type='text' id='search' /> 
<button type='button' id='startSearch'>Search</button> 
</fieldset> 


<script type="text/javascript"> 

    $(function(){ 

      $("#startSearch").click(function() { 

       serchVal = 'transID > "5"'; 

       $("#search").val(serchVal); 

       $("#grid").trigger("reloadGrid"); 


      }); 


     $("#list").jqGrid({ 

     url:'data.cfc?method=gridData', 
     datatype: 'json', 
     mtype: 'POST', 

     jsonReader : { 
     root: "rows", 
     page: "currentpage", 
     total: "totalpages", 
     records: "totalrecords", 
     repeatitems: false, 
     id: "0", 
     }, 

     postData: { search: function() { return $("#search").val(); },},  

     colModel :[ 
      {name:'transid', label:'Trans ID', width:60}, 
      {name:'companyname', label:'Company Name', width:245}, 
      {name:'companycode', label:'Company Code', width:245}, 
      {name:'datasource', label:'Datasource', width:245} 

     ], 
     pager: '#pager', 
     rowList:[10,50,100], 
     rowNum:'10', 
     height:221, 
     sortname: 'transid', 
     sortorder: 'asc', 
     viewrecords: true, 
     gridview: true, 
     caption: 'Get Trans', 
     altRows: false, 
     autowidth: true, 
     forceFit: true, 
     rownumbers: true, 
     scroll: false, 
     sortable: true 

     });  

     $("#list").jqGrid('navGrid','#pager',{edit:false,add:false,del:false,search:false,view:true}); 

    }); 

</script> 

    <table id="grid"></table> 
    <div id="pager"></div> 
+0

为了理解你的问题,你需要知道*你在哪里定义变量'searchVal',以及*在哪里以及何时给它赋值。所以更完整的代码是必需的。 – Oleg 2012-02-25 17:20:24

+0

谢谢奥列格。我只是用更多代码更新了我的问题 – Sequenzia 2012-02-25 21:23:35

回答

2

我想这个问题只是存在,因为你没有申报的变量serchVal(您的意思可能是searchVal)。您可以尝试修改代码以下

$(function() { 
    var searchVal = ''; 

    $("#startSearch").click(function() { 
     searchVal = 'transID > "5"'; 
     $("#grid").trigger("reloadGrid"); 
    }); 

    $("#list").jqGrid({ 
     url: 'data.cfc?method=gridData', 
     datatype: 'json', 
     mtype: 'POST', 
     jsonReader : { 
      page: "currentpage", 
      total: "totalpages", 
      records: "totalrecords", 
      repeatitems: false, 
      id: "0" 
     }, 
     postData: { search: function() { return searchVal; }}, 
     colModel: [ 
      {name: 'transid', label: 'Trans ID', width: 60}, 
      {name: 'companyname', label: 'Company Name', width: 245}, 
      {name: 'companycode', label: 'Company Code', width: 245}, 
      {name: 'datasource', label: 'Datasource', width: 245} 
     ], 
     pager: '#pager', 
     rowList: [10, 50, 100], 
     rowNum: 10, 
     height: 221, 
     sortname: 'transid', 
     viewrecords: true, 
     gridview: true, 
     caption: 'Get Trans', 
     autowidth: true, 
     rownumbers: true, 
     sortable: true 
    }).jqGrid('navGrid', '#pager', 
     {edit: false, add: false, del: false, search: false, view: true}); 
}); 

之后,你可以删除<input type='text' id='search' />

+0

是的,它做到了。现在对我来说很有意义。我尝试了不同的方式,但现在我发现我需要在click事件之外声明变量。再次感谢! – Sequenzia 2012-02-25 21:45:17

+0

@Sequenzia:不客气! – Oleg 2012-02-25 21:49:45

1

你为什么不只是包装在一个函数的逻辑

function SomeLogic() { 
    return("some logic here!"); 
} 

这将被这样调用:

postData: { search: function() { return SomeLogic() } }, 

,所以你只需要重装电网

$("#startSearch").click(function() { 
    $("#grid").trigger("reloadGrid"); 
}); 

明显的功能SomeLogic可以只返回searchVal

function SomeLogic() { 
    return(searchVal); 
} 
+0

感谢您的帮助LeftX。我试过这样但它仍然无法正常工作。网格功能仍然无法访问SomeLogic功能。我做错了什么。 – Sequenzia 2012-02-25 21:24:45