我有一个Grails应用,其中包含一个.gsp
页面,其中包含多个textField
个,多个submitToRemote
按钮,以及一对actionSubmit
个按钮。在填写textField
时,我希望能够在完成后点击输入,并使其与点击特定的submitToRemote
按钮相同。目前它表现得好像我点击了一个我从未故意指定的特定actionSubmit
按钮。
我发现了这个:How to trigger HTML button when you press Enter in textbox?。这似乎是我想要的,所以我将它改编到我的页面,但它似乎没有做任何事情。
我会放弃发布整个.gsp
,但添加我认为适合该问题的内容。
这是当前正在激活的按钮:
<br>
<g:hiddenField name="type" value="head"/>
<g:actionSubmit value="Get Reports" action="showReports"/>
<br>
以下是我想要激活的按钮:
<g:submitToRemote value="find" url="[action: 'findCustomer']"
update="results" />
所以我所做的是为目标submitToRemote
按钮和1 textField
添加一个id,然后从上面的链接页面添加包裹在脚本周围的<g:javascript>
标记。看起来像这样:
<g:textField name="lastName" id="inputTextBox"/>
...
<g:submitToRemote value="find" id="findCustomer" url="[action: 'findCustomer']"
update="results" />
...
<g:javascript>
$(document).ready(function(){
$('#inputTextBox').keypress(function(e){
if(e.keyCode==13)
$('#findCustomer').click();
});
});
</g:javascript>
另外,我正在使用jQuery库:
<g:javascript library="jquery" />
我不确定我的方法是否存在缺陷,因为我确实需要它来处理页面上的10个textField
中的任何一个。我浏览了grails文档,但找不到任何与之匹配的内容......
答案 0 :(得分:2)
我发现解决方案与我的解决方案非常接近。
首先,我必须在我的submitToRemote
按钮中添加一个ID:
<g:submitToRemote value="find" url="[action: 'findCustomer']" update="results" id="submitForm"/>
然后在我的main.gsp
中添加了正确的脚本:
$(document).bind("keypress", function (e) {
if (e.keyCode == 13) {
$("#submitForm").click();
return false;
}
});
这里真正重要的是return false;
因为没有它,它会点击按钮,然后提交不是我需要的表格。