我是 alfresco 的新手,我使用 kickstart 创建了工作流,我部署到 alfresco 共享它工作正常,在工作流表单中,我需要将两个文本框值相乘。我希望乘法的结果出现在第三个文本框中,只要输入前两个文本框中的值,不按任何按钮是可能的吗?如何 ?
问问题
384 次
1 回答
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:field1 的值动态隐藏 sc:field2。在您的情况下,您要处理三个字段 - 两个正在相乘,第三个显示结果。您可能只需要在第三个字段上使用自定义表单控件。它可以轻松地从其他两个字段中获取值。
现在创建自定义表单控件。在自定义表单控件上添加一些绑定到两个字段的 onChange 事件的 JavaScript,以调用计算值的自定义函数。
在我的动态隐藏字段示例中,我使用 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>
在您的情况下,您不是基于下拉值显示/隐藏字段,而是获取两个字段的值,将它们相乘,并将它们设置在第三个字段中,但同样的逻辑适用。每当两个字段中的任何一个发生更改时,您都希望重新计算产品并将其存储在第三个字段中。
于 2016-04-21T18:15:29.677 回答