让remoteField更新另一个字段

时间:2013-10-23 03:09:19

标签: grails

我是Grails的新手并尝试使用Ajax。在我为remoteField查看的所有示例中,结果呈现给屏幕上的普通div区域。我有这个工作,但我希望控制器的结果更新其中一个gsp字段中的值。当我按如下所示进行设置时,字段元素将消失并仅替换为纯文本。有没有办法识别特定的字段呢?

<div id="thisOne" class="fieldcontain ${hasErrors(bean: orderItemInstance, field: 'total', 'error')} required">
    <label for="total">
        <g:message code="orderItem.total.label" default="Total" />
        <span class="required-indicator">*</span>
    </label>
    <g:field name="total" value="${fieldValue(bean: orderItemInstance, field: 'total')}" required=""/>
</div>

<div id="input" class="fieldcontain">
    <label for="input">
        Input field
    </label>
    <g:remoteField name="input" action="recalc" update="thisOne"/>
</div>

2 个答案:

答案 0 :(得分:0)

<div id="thisOne">
</div>
<div id="input" class="fieldcontain">
    <label for="input">
        Input field
    </label>
    <g:remoteField name="input" action="recalc" update="thisOne"/>
</div>
_updateTotal.gsp

中的

<div  class="fieldcontain ${hasErrors(bean: orderItemInstance, field: 'total', 'error')} required">
    <label for="total">
        <g:message code="orderItem.total.label" default="Total" />
        <span class="required-indicator">*</span>
    </label>
    <g:field name="total" value="${fieldValue(bean: orderItemInstance, field: 'total')}" required=""/>
</div>

行动中:

def recalc(){
.....
render(template:"updateTotal",....)
}

当使用ajax时,我们更新div,前一个值将消失。所以你把内容作为模板,将成为div的内容。

所以我将总字段放在一个模板中。在远程字段中调用的控制器操作将呈现模板。试试这样。

答案 1 :(得分:0)

您可以尝试onSuccess remoteField的事件,例如

<div class="fieldcontain ${hasErrors(bean: orderItemInstance, field: 'total', 'error')} required">
  <label for="total">
    <g:message code="orderItem.total.label" default="Total"/>
    <span class="required-indicator">*</span>
  </label>
  <g:field id="thisOne" type="text" name="total" value="${fieldValue(bean: orderItemInstance, field: 'total')}" required=""/>
</div>

<div id="input" class="fieldcontain">
  <label for="input">
    Input field
  </label>
  <g:remoteField name="input" action="test2" onSuccess="jQuery('#thisOne').val(data)"/>
</div>

注意: - thisOne现在是字段的id