Форма рабочего процесса Alfresco Добавление двух значений текстового поля и автоматическое отображение суммы в третьем текстовом поле

Я новичок в alfresco. У меня есть рабочий процесс с помощью кикстарта. Я развертываю его в общем ресурсе alfresco, он работает нормально. В форме рабочего процесса мне нужно умножить два значения текстового поля. Я хочу, чтобы результат умножения отображался в 3-м текстовом поле, как только введите возможны значения в первых двух текстовых полях без нажатия какой-либо кнопки? и как ?


person JohnPaul    schedule 21.04.2016    source источник
comment
Что это за рабочий процесс? Почему вы хотите умножать значения в форме?   -  person    schedule 21.04.2016
comment
Вам нужно определить свои собственные элементы управления и сопоставить их со свойствами формы в файле share-config-custom.xml. В этих элементах управления используйте javascript для любых действий с вашими текстовыми полями.   -  person M.Diachenko    schedule 21.04.2016
comment
Его рабочий процесс расчета цены, могу ли я узнать, как установить свойства в share-config-custom.xml, можете ли вы предложить какую-либо ссылку и пример   -  person JohnPaul    schedule 22.04.2016


Ответы (1)


Вот несколько фрагментов из примера, который скрывает второе поле на основе раскрывающегося значения в первом поле. У вас есть аналогичное требование, так что это должно помочь.

Сначала отредактируйте конфигурацию формы share-config-custom.xml, чтобы указать, что ваши свойства должны использовать настраиваемые элементы управления формы. Это будет выглядеть примерно так:

           <field id="sc:field2" label-id="prop.sc_field2" >
                <control template="/com/someco/components/form/controls/dynamicField.ftl" >
                    <control-param name="maxLength">255</control-param>
                </control>
           </field>

В этом случае я собираюсь динамически скрыть sc:field2 на основе значения sc:field1. В вашем случае у вас есть три поля, с которыми вы имеете дело: два умножаются, а третье показывает результат. Вам, вероятно, нужен только настраиваемый элемент управления формой в третьем поле. Он может легко получить значения из двух других полей.

Теперь создайте настраиваемый элемент управления формы. В пользовательском элементе управления формой добавьте JavaScript, который привязывается к событию onChange ваших двух полей, чтобы вызвать пользовательскую функцию, которая вычисляет значение.

В моем примере с динамическим скрытым полем я делаю что-то подобное в своем пользовательском элементе управления формой с помощью JQuery:

<@markup id="js">
    <@script type="text/javascript" src="${url.context}/res/jquery/jquery-1.6.2-min.js" group="form" />
</@>

<script type="text/javascript">//<![CDATA[
    // grab the field1 dropdown element
    var field1El = $("#template_x002e_edit-metadata_x002e_edit-metadata_x0023_default_prop_sc_field1");

    // declare a function that knows how to show/hide the div
    var toggleField2 = function(field1) {
        if (field1 === "Show Field2") {
            $("#field2").show();
        } else {
            $("#template_x002e_edit-metadata_x002e_edit-metadata_x0023_default_prop_sc_field2").val('');
            $("#field2").hide();            
        }
    }

    // bind the field1 dropdown element's change event to a function that calls our toggle function 
    field1El.bind("change", function(e) {
        var selected = $("option:selected", this);
        var field2 = this.value;
        toggleField2(field2);
    });

    // invoke the toggle function based on the current value of the dropdown before it is changed
    // by the user, ie, when the form is first opened
    toggleField2(field1El.find("option:selected").text());
//]]></script>

В вашем случае вы не показываете/скрываете поле на основе выпадающего значения, а вместо этого берете значение двух полей, умножаете их и устанавливаете в третьем поле, но применяется та же логика. Каждый раз, когда любое из двух полей изменяется, вы хотите пересчитать продукт и сохранить его в третьем поле.

person Jeff Potts    schedule 21.04.2016