【问题标题】:jQuery AJAX submit by hotkeysjQuery AJAX 通过热键提交
【发布时间】:2014-05-09 16:38:29
【问题描述】:

我正在尝试设置“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"+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>

它适用于点击事件,但按键。我用上面的 beforeSend 进行了测试,它返回了undefined。是什么让变量content 变成undefined?我该如何解决?

【问题讨论】:

  • 看看我的EDIT 1,它应该可以解决你的问题!
  • 获取目标的id,e.target.id。虽然我不确定你为什么要像$("#content"+id).val(); 那样做 concat
  • 很抱歉我忘记了 HTML 中的 PHP 部分。

标签: jquery ajax hotkeys


【解决方案1】:

我为你做了一个小例子:

$(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;
  }); 

关注以下示例中的 input 字段并尝试按Ctrl+Enter 来查看它的实际效果。

Online Demo

编辑 1:

使您的content 变量未定义的是它的范围。您明确地说 var content 并将其范围设为本地,同时尝试从另一个函数访问它。

var content 替换为content,你会得到你想要的!

说明:

JavaScript 有两个作用域:全局和本地。一个变量是 在函数定义之外声明的是一个全局变量,它的 value 可以在整个程序中访问和修改。一个变量 在函数定义中声明的是局部的。它被创建 并在每次执行函数时销毁,并且不能 由函数外的任何代码访问。 JavaScript 不支持 块范围(其中一组大括号 {... .} 定义了一个新范围), 块范围变量的特殊情况除外。

【讨论】:

  • 感谢您的回答。我终于找到了问题所在。变量id 尚未在此函数document.onkeydown = function(e, id) 中传递。怎么可能修好?再次感谢。
  • 我已经解决了。阅读您的答案后,我看到 var id 是全球性的。而且我不需要在这个函数中传递它。所以我只是删除了参数iddocument.onkeydown = function(e)
猜你喜欢
  • 2011-05-23
  • 2011-04-21
  • 2012-03-22
  • 2012-09-07
  • 1970-01-01
  • 1970-01-01
  • 2017-04-01
  • 2017-02-18
  • 2013-12-26
相关资源
最近更新 更多