如何检查何时按下字段输入/返回?

时间:2009-09-01 21:40:12

标签: javascript html post

我有多个字段,通常输入将按两个主要字段之一。我想知道哪个字段输入已被按下,我该怎么做? (我不太了解JS)

5 个答案:

答案 0 :(得分:6)

向每个字段添加“onkeypress”事件很简单,然后在事件处理程序中检查附加到事件的键代码。例如,请考虑以下代码:

form.elements['fieldone'].onkeypress = function(evt) {
   if (window.event) evt = window.event; // support IE
   if (evt.keyCode == 13) alert("Enter was pressed!");
   return true;
}

请注意,在大多数浏览器中,在表单字段中按Enter会发布该表单。如果您不希望这种情况发生,您只需从onkeypress处理程序返回false,这将告诉浏览器忽略该密钥。

答案 1 :(得分:2)

Check for enter并设置一些隐藏字段(示例使用JQuery):

$('#input_text').keyup(function(e) {
    //alert(e.keyCode);
    if(e.keyCode == 13) {
        alert('Enter key was pressed.');
    }
});

答案 2 :(得分:1)

在您的页面中包含此内容,当您按任意键时它会自动触发,并告诉您哪个html元素在发生时有焦点。

<script>
document.onkeypress = KeyPressed;

function KeyPressed(e)
{
    if (!e) e = window.event;

    f ((e.charCode) && (e.keyCode == 13))
    alert('Yay! Enter was pressed while field ' + document.activeElement.id + ' had focus!');
}
</script>

答案 3 :(得分:0)

您可以使用以下内容检查事件冒泡的元素

var text1 = document.getElementById('text1');
var text2 = document.getElementById('text2');
text1.onkeypress = keyPresser;
text2.onkeypress = keyPresser;

function keyPresser(e) {
    // to support IE event model
    var e = e || window.event;
    var originalElement = e.srcElement || e.originalTarget;

    if (e.keyCode === 13) {
      alert(originalElement.id);
    }
}

这是 Working Demo

我建议您看一下浏览器事件模型的差异,以及不引人注目的JavaScript。

答案 4 :(得分:0)

使用event delegation来避免将事件处理程序附加到大量元素:

window.onload = function () {
  document.onkeyup = function (e) {
    e = e || window.event;
    var target = e.target || e.srcElement,
        keyCode = e.keyCode || e.which;

    if (target.tagName.toLowerCase() == 'input' && keyCode == 13) {
      alert('Enter pressed on ' + target.id);
    }
  };
};