我是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>
答案 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