我的网页包含多个表单,其中只包含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>
任何线索?
答案 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);
});
}
});