在显示表单之前进行jqgrid验证

时间:2013-10-28 07:09:06

标签: javascript jquery jqgrid

我想在jqgrid中显示添加表单之前检查变量myVar是否有值。以下是我在添加选项中的代码,用于检查myVar是否具有值。如果myVar为null,那么我不希望添加表单。

}).navGrid('#mypager',{cloneToTop:true, edit:false,add:true,del:false,view:false,search: false,refresh:true},
    {},
    {
    beforeShowForm : function (formid)
    {
        if(myVar.length==0)
        {
            alert("Value can't be blank!");
            return[false,"Value can't be blank!"];
        }
    },
    recreateForm: true,
    reloadAfterSubmit:true,
    closeOnEscape:true, 
    modal:true,
    jqModal: false,
    savekey: [true,13],
    width:550,
    mtype:'POST',
    url: 'MyServlet',
    editData:{action:'ListInsert',myVar: function () {return myVar;}},
    afterSubmit: function (response)
    {
        var myInfo = '<div class="ui-state-highlight ui-corner-all">'+'<span class="ui-icon ui-icon-info" '+'style="float: left; margin-right:.3em;"></span>'+ response.responseText +'</div>';
        $infoTr = $("#TblGrid_" + $.jgrid.jqID(this.id) + ">tbody>tr.tinfo"),$infoTd = $infoTr.children("td.topinfo"); 
        $infoTd.html(myInfo);
        $infoTr.show();
        return [true, "", ""];                  
    },
    errorTextFormat: function (response)
    {
        return '<span class="ui-icon ui-icon-alert" ' +'style="float:left; margin-right:.3em;"></span>' +response.responseText;
    }
},

以上代码显示警告,但仍显示添加表单 myVar包含来自其他网格的ID,如果myVar没有值,则我不想显示添加表单。

提前致谢。

1 个答案:

答案 0 :(得分:1)

通过从beforeShowForm返回一些值,无法拒绝打开“添加/编辑”表单。您可以做的是在打开后立即关闭表格。例如,您可以使用afterShowForm。代码可能类似于

afterShowForm: function () {
    var idSelector = $.jgrid.jqID(this.p.id);
    if(myVar.length==0) {
        $.jgrid.hideModal("#editmod" + idSelector, {gbox: "#gbox_" + idSelector});
        alert("Value can't be blank!");
    }
}

请参阅演示here