Пользовательское поле формы (поле даты) - обработчик проверки - PullRequest
1 голос
/ 01 марта 2012

Я пытаюсь создать свой собственный обработчик проверки для некоторых настраиваемых полей в форме рабочего процесса. A имеет два поля: дата начала проекта и дата окончания проекта.

Для этих двух полей мне нужно два типа проверки:

  1. дата начала проекта не может быть меньше сегодняшней даты
  2. Дата окончания проекта должна быть равна или больше, чем дата начала проекта

Однако я все еще в начале создания пользовательских обработчиков валидации. Для начала я попробовал простой обработчик проверки для текстового поля только с числами, но это не работает. Я сделал следующее:

В моем share-config-custom.xml я добавляю

<config>
  <forms>
    <dependencies>
     <js src="/custom-form-validation.js" />
    </dependencies>
  </forms>

и подключитесь к моему полю

<field id="mcwm:shortProjectNumber" set="general" mandatory="true">
              <constraint-handlers>
                 <constraint type="MANDATORY" validation-handler="Alfresco.forms.validation.checkNumber" event="keyup" />
              </constraint-handlers>
           </field>

Файл custom-form-validation.js

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; 
};

Я поместил файл custom-form-validation.js в мою папку opt \ tomcat \ shared \ classes \ alfresco \ web-extension, но проверки полей вообще нет? Любое предложение по этому поводу?

С уважением, Aleksadnar

Ответы [ 2 ]

2 голосов
/ 02 марта 2012

Проверка поля в Share реализована в виде клиентского JavaScript. Таким образом, ваш файл JavaScript находится в корне вашего веб-приложения (желательно под структурой каталогов ниже), а не в WEB-INF. Например, вы можете поместить его в $ TOMCAT_HOME / webapps / share / extension / js. Возможно, вам придется соответствующим образом изменить ссылку на зависимости.

Далее, не помещайте пользовательский код в пространство имен Alfresco. Создайте свой собственный. Вы можете создать свое собственное пространство имен, поместив что-то вроде этого в начале вашего файла JavaScript:

if (typeof SomeCo == "undefined" || !SomeCo)
{
   var SomeCo = {};
}

Возможно, вы также захотите минимизировать свой JavaScript. Затем включите Share debug. Это можно сделать, поместив следующее в share-config-custom.xml (который находится в каталоге $ TOMCAT_HOME / webapps / share / WEB-INF / classes / alfresco / web-extension):

<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 и выяснить, почему ваш валидатор не работает.

0 голосов
/ 24 августа 2017

Вы можете использовать альтернативный способ реализации обработчика проверки поля формы, используя непосредственно 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);

Если вы хотите получить более подробную информацию об этом решении, вы можете посетить эту запись

...