jqueryajax热键提交
我正在尝试设置“Ctrl+Enter”以执行函数jqueryajax热键提交,jquery,ajax,hotkeys,Jquery,Ajax,Hotkeys,我正在尝试设置“Ctrl+Enter”以执行函数update: document.onkeydown = function(e, id){ var keyCode = (window.event) ? e.which : e.keyCode; if (keyCode == 13 && e.ctrlKey) { update(id); } } function update(id) { var title = $("#title"+i
update
:
document.onkeydown = function(e, id){
var keyCode = (window.event) ? e.which : e.keyCode;
if (keyCode == 13 && e.ctrlKey) {
update(id);
}
}
function update(id) {
var title = $("#title"+id).val();
var content = $("#content"+id).val();
$.ajax({
type: "POST",
url: url,
data: {
aid: id,
title: title,
content: content,
},
beforeSend : function(){
alert(content);
},
success: function(data){
$("#view"+id).html(data);
},
});
}
HTML部分:
<input type="text" id="title<?php echo $id ?>" >
<textarea id="content<?php echo $id ?>" ></textarea>
我给你举了一个小的、有效的例子:
$(document).keydown(function(event)
{
var currKey=0,e=e||event;
currKey=e.keyCode||e.which||e.charCode;
if (!( currKey == 13 && event.ctrlKey) && !(event.which == 19))
{
return true;
}
event.preventDefault();
alert("Ctrl + Enter was pressed"); // Replace this with your update(id);
return false;
});
在下面的示例中,将焦点放在输入字段上,然后尝试按Ctrl+Enter键查看它的操作
编辑1:
使您的内容变量未定义的是它的范围。您可以显式地说var content
,并将其作用域设置为本地,同时尝试从另一个函数访问它
将var content
替换为content
,您将得到您想要的
说明:
JavaScript有两个作用域:全局和局部。一个变量
在函数定义外部声明的是全局变量,其
值在整个程序中是可访问和可修改的。变数
在函数定义中声明的是局部的。它是被创造出来的
每次执行该函数时都会被销毁,并且不能
由函数外部的任何代码访问。JavaScript不支持
块范围(其中一组大括号{…}定义了一个新范围),
块作用域变量的特殊情况除外
看看我的编辑1
,它会解决您的问题!要获取目标的id,e.target.id
。虽然我不知道你为什么要这样做,比如$(“#content”+id).val()很抱歉,我忘记了HTML中的PHP部分。谢谢你的回答。我终于找到了问题所在。变量id
未在此函数中传递document.onkeydown=函数(e,id)
。你怎么能修好它?再次感谢,我已经解决了。阅读您的答案后,我发现varid
是全局的。我不需要在这个函数中传递它。所以我刚刚删除了paramid
,document.onkeydown=function(e)
。