0

我是 alfresco 的新手,我使用 kickstart 创建了工作流,我部署到 alfresco 共享它工作正常,在工作流表单中,我需要将两个文本框值相乘。我希望乘法的结果出现在第三个文本框中,只要输入前两个文本框中的值,不按任何按钮是可能的吗?如何 ?

4

1 回答 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 回答