我有多个字段,通常输入将按两个主要字段之一。我想知道哪个字段输入已被按下,我该怎么做? (我不太了解JS)
答案 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);
}
};
};