15

jQgridのチェックボックスをオンにしようとすると、問題のない値が選択されます。テキストフィールドに値を入力せずに、カスタムフォーマッタテキストフィールドがあり、チェックボックスを選択しようとすると、その後アラートメッセージが表示されます。チェックボックスをオフにしますが、フォーカスがグリッドから削除されません。

スクリーンショットを添付しましたので、答えを教えてください。

コードはここに貼り付けられます:

    jQuery("#list1").jqGrid({               

        url:actionurl,
        mtype: 'POST',          
        colNames:['PartnerId', 'Employee No','Employee Name' ,'Position', 'Position Id', 'Wages','Relieve Date','Days Required'],
        colModel:[                    
                      {name:'partnerId',index:'partnerId', width:280,sortable:true,search:false, hidden: true},
                      {name:'em_ka003_employeeno',index:'em_ka003_employeeno', width:200,sortable:true},
                      {name:'empname',index:'empname', width:280,sortable:false,search:false},
                      {name:'position',index:'position', width:250,sortable:false,search:false},
                      {name:'positionId',index:'positionId', width:0,sortable:false,search:false,hidden:true},                    
                      {name:'wages',index:'wages', width:100,sortable:false,search:false},                        
                      {name:'emp_relievedate',index:'emp_relievedate', width:200,sortable:false,search:false},
                      {name:'daysrequired',index:'daysrequired', width:140,sortable:false,search:false,formatter:createText},
                ],

        rowNum:10,
        rowList:[5,10,15],
        pager: '#pager1',         
        sortorder: "asc",
        sortname: 'em_ka003_employeeno', 
        viewrecords: true,
        rownumbers: true,
        loadonce: false,
        forceFit: true,
        datatype: 'xml',
        multiselect: true , 
        footerrow:true,
        userDataOnFooter:true,
        onSelectRow: function(rowId)
            { 
                handleSelectedRow(rowId); 
            },
        caption: "<b>Labor Extension",
        gridComplete: function() {          

            $.unblockUI();
        }



});

これは私のカスタムフォーマッター関数です:

function createText(el, cellval, opts)
    {
         return "<span><input class='dojoValidateValid required TextBox_OneCell_width number' type='text' id='days_req"+cellval.rowId+"' name='days_req"+cellval.rowId+"'  onKeyPress='return checkIt(event,false)'/></span>";

    }

function handleSelectedRow(id) 
{

var jqgcell     = jQuery('#list1').getCell(id, 'partnerId');
var daysrequired = jQuery("#days_req"+id+"").val();
var cbIsChecked = (jQuery("#jqg_list1_"+jqgcell).attr('checked'));

if(cbIsChecked==true)
 {

    /* Append the Days Required */


if(daysrequired=="")
    {

        alert("please enter the extension days");
        jQuery("#days_req"+id+"").focus();
        jQuery("#jqg_list1_"+jqgcell).attr('checked', false);
          jQuery('#list1').restoreRow(id);

        return false;
    }



 }

最初のスクリーンショットでは、ユーザーがテキストボックスに値を入力せずにチェックボックスを選択すると、アラートが表示されます.2番目のスクリーンショットでは、フォーカスが削除されません。

4

1 に答える 1

28

答えがわかりました。

その時点で jqgrid で特定の行を選択しているときにテキスト フィールドの値がゼロの場合は、javascript でそれを検証し、グリッドから選択した行のチェックを外します。

以下に貼り付けた作業コードを次に示します。

if(daysrequired=="0")
    {
        myGrid.jqGrid('resetSelection');
    }
  • myGrid私のグリッドIDです。
  • resetSelection選択した行を選択解除する jQGrid のメソッドです。
于 2011-07-19T12:09:08.853 に答える