按Enter键时定义默认按钮

时间:2014-06-18 17:54:34

标签: javascript grails

我有一个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文档,但找不到任何与之匹配的内容......

1 个答案:

答案 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;因为没有它,它会点击按钮,然后提交不是我需要的表格。