我有一个包含许多表单的页面,仅包含一个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/