通过在 struts-dojo 自动完成上按 enter 键来防止表单提交
Posted
技术标签:
【中文标题】通过在 struts-dojo 自动完成上按 enter 键来防止表单提交【英文标题】:Prevent form submit by pressing enter key on struts-dojo autocomplete 【发布时间】: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();
在很多情况下都取得了成功,但在这里它不起作用。
【问题讨论】:
【参考方案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;
,您新添加的代码用于提交表单,我不知道为什么会这样。以上是关于通过在 struts-dojo 自动完成上按 enter 键来防止表单提交的主要内容,如果未能解决你的问题,请参考以下文章
(Flutter) 如何在不按“完成”的情况下自动监听 TextField 中的变化?