没有提交按钮提交最近的表单?

时间:2017-01-10 17:35:47

标签: javascript php jquery html forms

我的网页包含多个表单,其中只包含textarea和隐藏字段id

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

为此我正在使用

$('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的表单内容传递给processing 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在某一时刻丢失了值。

更奇怪的是,下面发布的小提琴在小提琴中运行良好,但是当我下载代码并在我的本地主机上测试时,它不会。

这是代码

<!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>

任何线索?

1 个答案:

答案 0 :(得分:1)

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

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