当contenteditable = true时,无法在javascript / jQuery中捕获第一个onkeypress事件

时间:2011-05-06 07:21:19

标签: javascript jquery javascript-events

以下是代码:

<div onclick="this.setAttribute('contenteditable', 'true');"
    onkeypress="console.info(event.keyCode)">foo</div>

这就是我期望的工作方式:用户点击div,它是可编辑的,然后我可以拦截一些关键事件,使用Enter,Tab,Arrow键运行自定义处理。

问题是,您可以在点击后修改div,但无法onkeypress获取第一个按键事件。如果按两次,则只能获得按键事件。

我在Win7 32位上使用Chrome Dev v12。请帮忙

2 个答案:

答案 0 :(得分:4)

尝试像这样添加this.focus

<div onclick="this.setAttribute('contenteditable', 'true');this.focus();"
onkeypress="console.info(event.keyCode)">foo</div>

我在这里试过http://jsfiddle.net/carlesandres/At9uK/并且有效。

答案 1 :(得分:0)

你可以这样做(jquery方式):

<div id="div1"> foo </div>

<script>
$(document).ready(function(){
   $("#div1").click(function(){
      $(this).attr("contenteditable", true);
   }).keypress(function(event){
      console.info(event.keyCode);
   });
});
</script>

希望这会有所帮助。干杯