在Touch UI cq对话框上禁用文本字段

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Touch UI cq对话框上禁用文本字段相关的知识,希望对你有一定的参考价值。

我想在加载cq对话框时调用JS函数来验证某个字段是否已经存在,如果是,则从版本中禁用它。我尝试过验证但是在用户与字段交互后调用它,我需要一种方法在加载之前完成它。可能吗?

<id
   jcr:primaryType="nt:unstructured"
   sling:resourceType="granite/ui/components/coral/foundation/form/textfield"
   fieldLabel="ID"
   validation="is_empty" // DO THIS WHEN IS LOADED
   name="./id"
   required="{Boolean}true"/>
答案

我可以想办法使用cq.authoring.dialog clientlib和jQquery实现这一目标

  • 创建一个类别为cq.authoring.dialog的clientlib。此clientlib中的脚本仅加载到author instance中。
  • 使用granite:class属性在文本字段中添加一个类,这是使用上面的clientlib中的脚本挂钩到文本字段
          <id
            jcr:primaryType="nt:unstructured"
            sling:resourceType="granite/ui/components/coral/foundation/form/textfield"
            fieldLabel="ID"
            granite:class="readonlySelector"
            name="./id"
            required="{Boolean}true"/>
  • 您必须在dialog.xml中包含以下命名空间才能使用granite:classxmlns:granite="http://www.adobe.com/jcr/granite/1.0"
  • 注意上面在DOM中注册的类名

enter image description here

  • 使用像foundation-contentloaded这样的OOTB花岗岩事件监听器之一来启动对话框初始化时的脚本。您可以使用更窄的事件,查看granite documentation以获取更多活动
  • 使用Coral UI Textfield documentation查找支持的属性。支持disabledreadonly。将此代码放在cq.authoring.dialog clientlib中。
$(document).on('foundation-contentloaded', function (e) {//event fires when dialog loads
    var $textField = $('.readonlySelector');
    if ($textField.val()) {//truthy check
        $textField.prop('disabled', true);//Greys the field
        $textField.prop('readonly', true);
    }
})
  • 灰色和残疾

enter image description here

以上是关于在Touch UI cq对话框上禁用文本字段的主要内容,如果未能解决你的问题,请参考以下文章

禁用jQuery UI datepicker的焦点设置

如何禁用/启用对话框负正按钮?

Sencha Touch自动对焦在文本字段上

点击另一个 UITextField 后自动禁用键盘

在 chrome/firefox 阅读视图上禁用文本选择

如何动态更改 MDDialog KivyMD 中的文本字段?