【问题标题】:jqGrid: How to grey out read only fields on add/edit form dialog?jqGrid:如何在添加/编辑表单对话框中灰显只读字段?
【发布时间】:2013-12-10 14:56:42
【问题描述】:

我正在使用 jqGrid 来维护数据库,并且需要在添加/编辑表单对话框中将某些字段设为只读。我看到 jqGrid 在 editoptions 下支持只读字段,但是否有可能“灰显”只读输入框,以便有一个视觉提示让用户知道该字段是只读的且不可编辑?

提前致谢。

更新 感谢您快速回复奥列格!我尝试了您发布的内容,但在我的 IDE(Netbeans)中收到了很多代码警告。这是我的代码:

jQuery("#grid").jqGrid('navGrid','#grid_toppager', 
    {
         add:true,
         edit:true,
         view:true, 
         search:false, 
         del:false, 
         refresh:true
    },
    { // Edit form
         width:"auto",
         height:"auto",
         top:220,
         left:500,
         viewPagerButtons:false, //disables the arrows to next records
         topinfo:"Fields marked with (*) are required",
         resize:false,
         recreateForm: true,
         beforeShowForm: function ($form) {
             $form.find(".FormElement[readonly]")
                  .prop("disabled", true)
                  .addClass("ui-state-disabled")
                  .closest(".DataTD")
                  .prev(".CaptionTD")
                  .prop("disabled", true)
                  .addClass("ui-state-disabled")
    },  
    { // Add form
         width:"auto",
         height:"auto",
         top:220,
         left:500,
         topinfo:"Fields marked with (*) are required",
         resize:false,
         reloadAfterSubmit:true,
         closeAfterAdd: true
    },
    { // prmDel

    },

    { // prmSeach

    },

    { //prmView
         top:220,
         left:460
    }

); //jQuery("#grid").jqGrid('navGrid','#grid_toppager'  

还可以将灰色更改为稍暗的阴影吗?我需要用户仍然能够阅读它,但可以看到并理解它不可编辑的视觉提示。非常感谢奥列格

【问题讨论】:

    标签: jqgrid


    【解决方案1】:

    您可以使用beforeShowForm回调设置编辑表单的所有可读字段。

    The demo 使用如下代码

    $("#grid").jqGrid("navGrid", "#pager", {},
        {
            recreateForm: true,
            beforeShowForm: function ($form) {
                $form.find(".FormElement[readonly]")
                    .prop("disabled", true)
                    .addClass("ui-state-disabled")
                    .closest(".DataTD")
                    .prev(".CaptionTD")
                    .prop("disabled", true)
                    .addClass("ui-state-disabled");
            },
             // Add dialog options
        },
        {recreateForm: true}
    );
    

    它“灰显”编辑表单的所有只读文件:

    您可以使用该字段上没有设置disabled 属性的原因,如果需要,您可以使用另一个类作为"ui-state-disabled"。我主要想展示如何选择所有你想“变灰”的字段。

    【讨论】:

    • @klm10:您的代码错过了在beforeShowForm 回调结束时关闭}。所以你只有一个语法错误。此外,最好在beforeShowForm 内的长语句末尾添加;
    • 谢谢 Oleg,对于简单的编程错误,我们深表歉意。它现在可以与我的网格一起使用。我真的很感谢你的帮助!是否可以控制代码使用的灰色阴影?我需要它是较深的灰色阴影,以便它能够阅读,但保持视觉提示它是不可编辑的。再次感谢您的帮助!
    • @klm10:不客气!我使用了ui-state-disabled 类,您可以找到here 的定义。它基于opacity: .35;filter:Alpha(Opacity=35);。您可以定义您的类并在beforeShowForm 中使用它而不是ui-state-disabled。您只需更改opacity 的值。
    • 谢谢!!改变不透明度有效!我还有一个关于灰色字段的问题:How do I get make a readonly field an editable field on the Add form? 场景:在 Edit 表单上:将unit_id, short_desc, long_desc 设置为只读(灰色)。在 Add 表单上,unit_id 可编辑(用于添加目的),但将 short_desc 和 long_desc 保持为只读(灰色)。我找到了这段代码:$("#unit_id",formid).attr("readonly","readonly");,但我似乎无法让它工作
    • @klm10:欢迎您!有很多方法可以做到这一点。例如,您可以使用beforeInitData 表单编辑回调(参见the answer)。另一种方法是在beforeShowForm 内设置readonly 属性(或删除它)(参见the answer)。 One more answer 为您提供如何动态检测“编辑”或“添加”对话框的提示。顺便说一句,您可以设置readOnly 属性或使用jQuery.prop 而不是attr
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 2011-09-23
    • 2014-08-14
    • 1970-01-01
    • 2011-11-24
    相关资源
    最近更新 更多