Javascript 按enter键提交文本字段(AJAX)

Javascript 按enter键提交文本字段(AJAX),javascript,ajax,Javascript,Ajax,我有一个由AJAX操作的搜索。当用户按下搜索按钮时,它工作得非常好,问题是。。。如果用户按enter键。。。它提交表单,而不是执行AJAX javascript函数。如何使Enter按钮调用我的AJAX函数而不是提交表单?将其捕获到表单的onSubmit方法中并返回false。将其捕获到表单的onSubmit方法中并返回false。 与: 使用表单的onsubmit事件执行ajax调用,并将该按钮变成submit按钮(如果还没有) 示例HTML 使用表单的onsubmit事件执行ajax调用,并

我有一个由AJAX操作的搜索。当用户按下搜索按钮时,它工作得非常好,问题是。。。如果用户按enter键。。。它提交表单,而不是执行AJAX javascript函数。如何使Enter按钮调用我的AJAX函数而不是提交表单?

将其捕获到表单的onSubmit方法中并返回false。

将其捕获到表单的onSubmit方法中并返回false。

与:

使用表单的onsubmit事件执行ajax调用,并将该按钮变成submit按钮(如果还没有)

示例HTML

使用表单的onsubmit事件执行ajax调用,并将该按钮变成submit按钮(如果还没有)

示例HTML


以下是处理此问题的简单DOM方法:

<form action="javascript:void(0)">
    <input type="text" />
    <input type="submit" onclick="doSomething(this.form)">  
</form>
<script>
    function doSomething(form){
        alert('form submitted');
    }
</script>

将光标放在输入字段中,如果单击按钮或键入enter,则表单由javascript而不是页面提交

<form action="javascript:void(0)">
    <input type="text" />
    <input type="submit" onclick="doSomething(this.form)">  
</form>
<script>
    function doSomething(form){
        alert('form submitted');
    }
</script>

将光标放在输入字段中,如果单击按钮或键入enter,则表单由javascript提交,而不是页面提交。正确的方法是让非javascript用户使用表单提交并刷新页面,但对使用javascript的用户使用javascript调用:

<form action="yourscript.php" method="post" onsubmit="doSomething(this.form); return false;">
    <input type="text" />
    <input type="submit" />  
</form>
<script>
    function doSomething(form){
        alert('form submitted');
    }
</script>

正确的方法是让非javascript用户使用表单submit with page refresh,但对于使用javascript的用户,使用javascript调用:

<form action="yourscript.php" method="post" onsubmit="doSomething(this.form); return false;">
    <input type="text" />
    <input type="submit" />  
</form>
<script>
    function doSomething(form){
        alert('form submitted');
    }
</script>


对不起,我怎样才能在提交时。。。你能详细说明一下吗?在你的add-an-onSubmit=return-runAjaxInstead和have-runAjaxInstead-return-false中,它将不会提交。如果你不使用jQuery,这也是一个独立于框架的解决方案。对不起,我如何捕获onSubmit。。。你能详细说明一下吗?在你的add-an-onSubmit=return-runAjaxInstead和have-runAjaxInstead-return-false中,它将不会提交。如果你不使用jQuery,这也是一个独立于框架的解决方案。不过,这个解决方案对不支持javascript的用户没有回退。这个解决方案对不支持javascript的用户没有回退,不过,仅仅为此使用jQuery可能有些过分。而且jQuery并不总是最好的选择,这取决于你做什么。@JONYC我不同意。如果您手头有jQuery,我认为最好使用它来保持一致性,而不是将非基于jQuery的DOM操作/事件处理与基于jQuery的DOM操作/事件处理混合使用。我同意你的看法,jQuery可能不是解决所有问题的最佳解决方案。@vivin我只是指出,这样做,jQuery就太过分了。另外,这个问题没有提示jQuery。此外,我自己也不会使用jQuery,因为它的语法设计很差。在这里读更多关于它的内容:我认为这是相当主观的。我宁愿使用jQuery,也不愿自己处理交叉浏览器问题。例如,我个人更喜欢jQuery而不是Prototype,因为我不喜欢Prototype如何污染名称空间,我注意到您在文章中提到过,顺便说一句,这篇文章写得非常好!。我同意,这种不一致性很糟糕——希望他们能在以后的版本中修复它。@vivin我实际上没有写那篇文章,但我在企业级编写JS程序。我不得不说Prototype的框架是可靠的和病态的。我以前使用过jQuery,但它们设计糟糕的语法对我来说是一个破坏者。另外,没有什么jQuery可以做到原型所不能做到的。仅仅为了这个目的使用jQuery可能有点过头了。而且jQuery并不总是最好的选择,这取决于你做什么。@JONYC我不同意。如果您手头有jQuery,我认为最好使用它来保持一致性,而不是将非基于jQuery的DOM操作/事件处理与基于jQuery的DOM操作/事件处理混合使用。我同意你的看法,jQuery可能不是解决所有问题的最佳解决方案。@vivin我只是指出,这样做,jQuery就太过分了。另外,这个问题没有提示jQuery。此外,我自己也不会使用jQuery,因为它的语法设计很差。在这里读更多关于它的内容:我认为这是相当主观的。我宁愿使用jQuery,也不愿自己处理交叉浏览器问题。例如,我个人更喜欢jQuery而不是Prototype,因为我不喜欢Prototype如何污染名称空间,我注意到您在文章中提到过,顺便说一句,这篇文章写得非常好!。我同意,这种不一致性很糟糕——希望他们能在以后的版本中修复它。@vivin我实际上没有写那篇文章,但我在企业级编写JS程序。我不得不说Prototype的框架是可靠的和病态的。我以前使用过jQuery,但它们设计糟糕的语法对我来说是一个破坏者。另外,jQuery没有什么能做原型做不到的。它可以工作,但我认为它有点过分了。一个简单的“onsubmit=ajax”,而不是一个附加函数;返回false;'我会做的,但我认为这有点过分了。一个简单的“onsubmit=ajax”,而不是一个附加函数;返回false;'我会成功的
<form action="yourscript.php" method="post" onsubmit="doSomething(this.form); return false;">
    <input type="text" />
    <input type="submit" />  
</form>
<script>
    function doSomething(form){
        alert('form submitted');
    }
</script>