javascript - 在没有提交按钮的情况下提交最接近的表单?

标签 javascript php jquery html forms

我有一个包含许多表单的页面,仅包含一个textarea和一个带有id的隐藏字段

每次用户输入一些文本并在键盘上点击 command+enter 时,我都尝试使用 jQuery 提交表单。

为此我正在使用

$('textarea').keydown(function(e) {
    if(e.keyCode == 13 && e.metaKey) {

该部分工作正常,但是当我尝试提交表单时,脚本停止执行。我确信我对 closest('form') 提交做了一些困惑。

这是我的完整代码

$('textarea').keydown(function(e) {
    if(e.keyCode == 13 && e.metaKey) {
        $('textarea').closest('form').submit(function() {
        $.post("someurl.php", $(this).serialize(), function(data) {
        alert(data);
    });
    });
    };
});

当我调试时,它永远不会进入 $('textarea').closest('form').submit(function() {

知道如何将输入 command+enter 的表单内容传递到我的处理 URL 吗?

任何提示将不胜感激, 谢谢

更新

表单的 HTML 代码

    <form action="#">
    <div class="col-xs-1">
    <textarea class="form-control" rows="5" placeholder="Enter your answer"></textarea>
    <input type="hidden" name="idval" value="xxxx">
    </div>
    </form>

编辑2

在调试代码时,我发现参数已正确传递,但在某一时刻 jquery 丢失了值。

更奇怪的是,下面发布的 fiddle 在 fiddle 中工作正常,但是当我下载代码并在本地主机上测试它时,它却不起作用。

这是代码

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <meta name="robots" content="noindex, nofollow">
  <meta name="googlebot" content="noindex, nofollow">


<script
  src="https://code.jquery.com/jquery-2.2.4.js"
  integrity="sha256-iT6Q9iMJYuQiMWNd9lDyBUStIq/8PuOW33aOqmvFpqI="
  crossorigin="anonymous"></script>


  <style type="text/css">

  </style>

  <title> by b</title>


<script type='text/javascript'>//<![CDATA[
window.onload=function(){
$('textarea').keydown(function(e) {
    if(e.keyCode == 13 && e.metaKey) {
        // e.preventDefault();
        $.post($(this).closest("form").attr("action"), { html: $(this).closest("form").serialize()}, function(data) {
            alert(data);
        });
    }
});
}//]]> 

</script>

</head>

<body>
  <form action="#">
<textarea name="area1"></textarea>
</form>

<form action="#">
<textarea name="area2"></textarea>
</form>

</body>

</html>

有什么线索吗?

最佳答案

您不应该在另一个事件处理程序中定义一个事件处理程序。您应该只发布当前表单。

$('textarea').keydown(function(e) {
    if(e.keyCode == 13 && e.metaKey) {
        $.post($(this).closest("form").attr("action"), $(this).closest("form").serialize(), function(data) {
            alert(data);
        });
    }
});

关于javascript - 在没有提交按钮的情况下提交最接近的表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41574911/

相关文章:

php - 请求的包...在任何版本中都找不到

Jquery - 循环遍历具有特定类的每个 div 并根据其宽度应用新类

javascript - 单击另一个元素时如何显示和隐藏

javascript - 将 PHP 数组回显到 Javascript

javascript - 不支持的 CSS 属性的 jQuery 回退?

javascript - 使用 jQuery 按类刷新 div

android - 在文件 :///in android Webkit 中动态加载 javascript 文件

jquery - 如何使用图像映射来显示/隐藏特定的 div?

javascript - grunt connect 退出而不是提供本地文件

javascript - 如何在渲染 Flexigrid 表时将 bool 值转换为是/否