首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义表单字段(日期字段)验证-处理程序

自定义表单字段(日期字段)验证-处理程序
EN

Stack Overflow用户
提问于 2012-03-01 13:36:58
回答 2查看 2.8K关注 0票数 1

我试图为工作流表单上的一些自定义字段创建自定义验证处理程序。A有两个字段:项目开始日期和项目结束日期。

对于这两个字段,我需要两种类型的验证:

  1. 项目开始日期不能少于今天的日期
  2. 项目结束日期必须相等,否则项目开始日期

不过,我仍在开始创建自定义验证-处理程序。首先,我尝试了一些只包含数字的文本字段的简单验证处理程序,但这是无效的。我做了以下工作:

在我的share-config-custom.xml中添加

代码语言:javascript
复制
<config>
  <forms>
    <dependencies>
     <js src="/custom-form-validation.js" />
    </dependencies>
  </forms>

并连接到我的领域

代码语言:javascript
复制
<field id="mcwm:shortProjectNumber" set="general" mandatory="true">
              <constraint-handlers>
                 <constraint type="MANDATORY" validation-handler="Alfresco.forms.validation.checkNumber" event="keyup" />
              </constraint-handlers>
           </field>

自定义表单-validation.js文件是

代码语言:javascript
复制
Alfresco.forms.validation.checkNumber = function checkNumber(field, args, event, form, silent, message) {
  var ok = (field.value=="") || field.value.match("^\\d{4}\\/\\d{4}$");

  var valid = ok != null && ok;

  if (!valid) {
     YAHOO.util.Dom.setStyle(field.id, "border", "2px solid red");     
  }
  else {
     YAHOO.util.Dom.setStyle(field.id, "border", "");
  }

  // Inform the user if invalid
  if (!valid && !silent && form)
  {
     var msg = "The number must match the pattern 1234/5678.";
     form.addError(form.getFieldLabel(field.id) + " " + msg, field);
  }  

  return valid; 
};

我把自定义表单-validation.js文件放在我的opt\tomcat\shared\classes\alfresco\web-extension文件夹中,但是根本没有字段验证?对此有什么建议吗?

你好,阿列克萨德纳尔

EN

回答 2

Stack Overflow用户

发布于 2012-03-02 03:16:48

共享中的字段验证是作为客户端JavaScript实现的。因此,您的JavaScript文件位于web应用程序的根目录中(最好是位于该目录结构之下),而不是在WEB下。例如,您可能希望将其放在$TOMCAT_HOME/webapp/share/extension/js下面。您可能必须相应地调整依赖项引用。

接下来,不要将自定义代码放在Alfresco的命名空间中。创造你自己的。通过在JavaScript文件的开头放置类似的内容,您可以创建自己的命名空间:

代码语言:javascript
复制
if (typeof SomeCo == "undefined" || !SomeCo)
{
   var SomeCo = {};
}

您可能还想缩小您的JavaScript。然后,打开共享调试。要做到这一点,您可以将以下内容放置在share-config-custom.xml中(该文件位于$TOMCAT_HOME/webapps/share/WEB-INF/classes/alfresco/web-extension):下)

代码语言:javascript
复制
<alfresco-config>
    <!-- Put Share Client in debug mode -->
    <config replace="true">
        <flags>
            <client-debug>false</client-debug>
            <client-debug-autologging>false</client-debug-autologging>
        </flags>
    </config>
</alfresco-config>

这样,您就可以使用浏览器的开发人员控制台逐步遍历客户端JavaScript,并找出验证器不工作的原因。

票数 2
EN

Stack Overflow用户

发布于 2017-08-24 11:59:10

您可以使用另一种方法直接使用javascript来实现表单字段验证处理程序。我的意思是,您可以添加一个侦听器来控制何时提交表单,并添加一个条件来取消该子项目。因此,在加载表单时,可以使用这样的代码:

代码语言:javascript
复制
//Add a listener to control when the form is submitted
document.body.addEventListener("submit", function (event) {

     //If there are wrong values
     if(wrongValues()){
          //Cancel the event
          event.stopPropagation();
          event.preventDefault();
     }
}, true);

如果您想了解更多有关此解决方案的详细信息,可以访问此帖子

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9517208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档