2011-05-19 163 views
2

我有5个点击的div标签,div的显示一个黄色的方框,方框内的数字。当用户点击一个广场,广场上的颜色变化来指示点击广场是'主动'广场(这部分工作正常)。然后用户应该能够按下一个号码。当按下数字时,div中显示的数字应改变为他们按下的数字!onKeyPress does not Work At Work!

但是...它不起作用!作为div属性,我有onkeypress =“(更改标记的innerHTML的函数)”。

出于测试目的,我写onkeypress事件= “警报( '键');”作为div属性来查看它是我的javascript函数还是onKeyPress本身!但警报不会显示!

我试图把onkeypress事件警报在身上的标签,它工作得很好。它只是分区!我也尝试按下一个键之前,我点击的div和点击后的div!

我也试过onkeydown和onkeyup!

我真的不能看到问题!代码如下:

<html> 
<head> 
<style type="text/css"> 
#grid { 
    position:absolute; 
    padding: 0; 
    border:0; 
    width:370px; 
    height:370px; 
} 
.box 
{ 
    position:absolute; 
    border: 2px solid Black; 
    height: 50px; 
    width: 50px; 
    vertical-align: middle; 
    text-align: center; 
    background-color: yellow; 
    font-size: xx-large; 
    color:Navy; 
    font-family: Arial; 
    margin:10px; 
    line-height:1.6; 
} 
.boxActive 
{ 
    background-color:Aqua; 
} 
</style> 

<script type="text/javascript> 
function clicked(id) { 
    reset(); 
    $(id).addClass('boxActive'); 
} 
</script> 

<script type="text/javascript" src="JQuery.js"></script> 

</head> 
<body> 
    <div id="grid"> 
     <div id="cell_0_0" class="box" onclick="clicked(this);" onkeypress="alert('key');" style="top:0%; left:0%; ">0</div> 
     <div id="cell_0_1" class="box" onclick="clicked(this);" onkeypress="alert('key');" style="top:0%; left:20%; ">0</div> 
     <div id="cell_0_2" class="box" onclick="clicked(this);" onkeypress="alert('key');" style="top:0%; left:40%; ">0</div> 
     <div id="cell_0_3" class="box" onclick="clicked(this);" onkeypress="alert('key');" style="top:0%; left:60%; ">0</div> 
     <div id="cell_0_4" class="box" onclick="clicked(this);" onkeypress="alert('key');" style="top:0%; left:80%; ">0</div>    
    </div> 
</body> 
</html> 

任何人都可以建议如何解决这个问题或更改div标签的innerHTML,当用户点击div和按下一个键的方法!

谢谢!

Alex

回答

3

最近我遇到了类似的问题。我认为你需要做的是让你的DIV得到关注。 this question的答案应该有所帮助 - 实质上将一个tabindex属性添加到DIV。

+0

你先生...是一个白德曼:) – 2011-05-19 14:54:13

0

我不认为你可以,因为它是一个容器元素,而不是输入元素的div元素上使用onkeypress事件的事件。

如果你把对身体的onkeypress事件,你先前所描述,那么你可以读取按键值由ID来标识股利。一旦你有了div,你可以根据需要改变风格/类。

0

添加tabindex="0"到您的股利。这将使其“可以聚焦”。然后按键事件将起作用。重点和按键的

工作例如:http://jsfiddle.net/nYLqA/(点击一个框,然后按一个键)(颜色的变化已被禁用)

如果使用tabindex="-1",那么你必须点击关注它。如果您使用的是tabindex="0",则通过点击或选项卡键可让您专注于此。

此外,如果你使用这条路线我建议

  • 测试它。确保它适用于你关心的浏览器(主要测试IE 7,与8/7兼容)
  • 使用onfocusonblur而不是onclick来改变你的颜色。如果你不关心IE 7,你可以使用CSS :focus来改变颜色。(就像CSS :hover
4

onkeypress时按下某个键时,才会触发为“主动”领域。

线索有“字段”这个词 - 默认情况下,<div>元素不能变为“活动”;只有输入字段。

您可能会喜欢tabindex="-1"作为<div>中的某个属性,但我无法保证它可以正常工作,但我还没有尝试过。即使那样,您可能也必须在元素上手动输入setFocus()

(此答案的最后一部分音符信贷来自其他地方SO:Is it possible to focus on a <div> using javascript focus() function?