Я новичок в alfresco. Я создаю рабочий процесс, используя kickstart. Я развертываю в alfresco. Он работает нормально. В форме рабочего процесса мне нужно умножить два текстовых поля values.I хочу, чтобы результат умножения появлялся в 3-м текстовом поле, как только введите значения в первых двух текстовых окнах, без нажатия какой-либо кнопки? и как ?Форма рабочего процесса Alfresco Добавьте два значения текстового поля и автоматически отобразите сумму в третьем текстовом поле
ответ
Вот несколько фрагментов из примера, который скрывает второе поле, основанное на выпадающем значении в первом поле. У вас есть аналогичное требование, поэтому это должно помочь.
Сначала измените конфигурацию формы 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>
В этом случае я собираюсь динамически скрывать СБН: поле2 на основе стоимости СБН: 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>
В вашем случае, вы не показа/скрытия поля на основе значения выпадающего, но вместо этого захватывают значение двух полей, умножая их и устанавливая их в третьем поле, но применяется одна и та же логика. В любое время, когда какое-либо из двух полей меняется, вы хотите перепроверить продукт и сохранить его в третьем поле.
благодаря ее работе – JohnPaul
Каков рабочий процесс? Почему вы хотите умножить значения в форме? –
Вам нужно определить свои собственные элементы управления и сопоставить их с свойствами формы в share-config-custom.xml. В этих элементах управления используется javascript для любых действий с вашими текстовыми полями. –
Его рабочий процесс расчета расценок может я знаю, как заданные свойства в share-config-custom.xml вы можете предложить любую ссылку и пример – JohnPaul