【问题标题】:Prevent form submit by pressing enter key on struts-dojo autocomplete通过在 struts-dojo 自动完成上按 enter 键来防止表单提交
【发布时间】:2013-05-15 09:30:23
【问题描述】:

我正在尝试更改 struts2-dojo 自动完成的输入事件,而不是提交表单,它应该做一些我的 jQuery 工作。

我试过了……

<s:form action="EmpAction">
    <sx:autocompleter label="Name" name="name" list="nameList" id="Name" showDownArrow="false" />
<s:textfield name="test" label="test" id="test"/>
</s:form>

在 jQuery 中...

<script type="text/javascript">
  $(function(){
       $('#Name').key(function(e) {

        if (e.keyCode == 13) {
            e.preventDefault();
            alert($(this).val());
            //and some jQuery code to get JSON and fill test textfield.
        return false;
        }
    });

}); 
</script>

但是还是提交这个表单,我用过

e.preventDefault();

在很多情况下都取得了成功,但在这里它不起作用。

【问题讨论】:

    标签: javascript jquery struts2 dojo dom-events


    【解决方案1】:

    此代码将在您的上下文中工作

    $(document).ready(function() {
      $(window).keydown(function(event){
        if(event.keyCode == 13) {
    if(event.currentTarget != $("yourAutocompleteId")){
          event.preventDefault();
    myPersonalFunctionCall();
    }
    else{$("yourAutocompleteId").one("onfocus", false);}
    
          return false;
        }
      });
    });
    

    【讨论】:

    • 嘿,抱歉,我在我的问题中遗漏了几行,我刚刚添加了它。缺少的部分是表单标记和自动完成 struts2-dojo 标记。我测试了您的代码及其工作,但在我的情况下,当我在 struts-dojo 自动完成标签中按 Enter 时,它不应该提交表单,而是应该按照我在 jquery 中指示的操作...
    • 那还没有实现什么?
    • Enter 键应该在自动完成 struts2-dojo 标签上工作,它不应该提交表单,而是至少应该显示警报“hi”消息,然后它不应该做任何事情。
    • 我已经更新了我的答案。您必须检查输入事件是否从自动完成中触发。如果是,则什么也不做。否则你必须阻止默认功能。
    • 它不再工作,表单正在提交。而你的第一个代码工作正常,它没有提交表单。这段代码if(event.currentTarget != $("yourAutocompleteId")){myPersonalFunctionCall();}else{$("yourAutocompleteId").one("onfocus",false;},您新添加的代码用于提交表单,我不知道为什么会这样。
    猜你喜欢
    • 2010-10-28
    • 1970-01-01
    • 2010-10-09
    • 1970-01-01
    • 2018-10-07
    • 2019-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多