grails:onchange = $ {remoteFunction()

时间:2014-02-21 20:42:17

标签: javascript jquery ajax grails

我是grails的新手,我正在尝试在第一个字段填写时将另一个textfield元素插入到表单中。我正在尝试使用remoteFunction操作来调用模板但是模板没有被调用。如果我将“g:textField”更改为“g:select”选项,我会得到一个下拉框,但不想要下拉框。

我的想法是拥有一个名称字段,当它被填写时,它应该在第一个字段下面输入另一个名称字段。我不想在表单中硬编码几个名称字段。

我的观点 -

<tr class="prop">
<td valign="top" class="name">
<label for="casStudent_1"><g:message code="casawards.casStudent_1.label" default="Student #1" /></label>
</td>
<td valign="top" class="value ${hasErrors(bean: casawardsInstance, field: 'casStudent_1', 'errors')}">
<g:textArea onchange="${remoteFunction(action: 'create2' controller="casawards",
update: 'casStudent_2',
params: '\'timeName=\' + this.value')}"
name="casStudent_1" valueMessagePrefix="casawards.casStudent_1"
value="${casawardsInstance?.casStudent_1}" />
</td>
</tr>

控制器 -

def _create2 = { render (template:"create2") }

模板(create2) -

<tr class="prop">
<td  valign="top" class="name">
<label id = "casStudent_2" for="casStudent_2"><g:message    code="casawards.casStudent_2.label" default="Student #2" /></label>
</td>
<td valign="top" class="value ${hasErrors(bean: casawardsInstance, field: 'casStudent_2', 'errors')}">
<g:textField name="casStudent_2" value="${casawardsInstance?.casStudent_2}" />
</tr>

任何指导都将不胜感激。

1 个答案:

答案 0 :(得分:0)

remoteFunction中的'update'参数应指向现有的DOM元素。在您的情况下,将调用'casawards / create2'并将响应设置为ID为“casStudent_2”的现有DOM元素的内容。你确定你的DOM中存在这个元素吗?

另一个问题是当您将焦点移出textarea时调用onChange。尝试单击页面中的其他位置,查看是否进行了呼叫。