模糊输入更改事件

时间:2009-10-26 22:28:02

标签: javascript html dom

我需要触发输入更改事件,但前提是值已更改。我需要通过键盘事件完成此操作。有没有办法调用浏览器的更改机制,该机制会触发更改事件触发,还是不依赖于值是否被修改?

示例:

User clicks on an input field
User does not modify value of the field
user presses a key causing the input field to blue
onchange does not get triggered.

VS

User clicks on an input field
User modifies the value of the field
user presses a key causing the input field to blue
onchange gets triggered.    

这可能吗?或者我需要进行onfocus保存值,onblur比较并可能调用onchange,但仅当onchange尚未调用时才会被调用,因为用户只是通过单击vs键盘触发器来导航。

3 个答案:

答案 0 :(得分:1)

它有什么关键?如果该键不是标准输入键,则设置onchange以检查字段更改字段。

你也可以绑定一个onkeypress做文件,并返回:false;当按下将输入更改为蓝色的键时。

更多的背景可能有所帮助。

答案 1 :(得分:1)

如果我说得对,你需要两个变量来记住输入的前一个和当前状态,以及一个处理交互的监听器:

<html>
<head>
<script language="javascript">
var startFieldValue = "Some value, possibly value of input when it is loaded";
var endFieldValue = "";
var focusFlag = 0;
function interact(keyEvent) {
    if(focusFlag == 1)
        return true;
    var key = keyEvent.keyCode? keyEvent.keyCode : keyEvent.charCode
    if(String.fromCharCode(key) == "a") {
        if(startFieldValue != endFieldValue) {
            var elem = document.getElementById('input-to-be-changed');
            elem.style.backgroundColor = "blue";
            startFieldValue = endFieldValue;
        }
    }
}
</script>
</head>
<body onkeypress="interact(event);">
<input id="input-to-be-changed" onchange="endFieldValue = document.getElementById('input-to-be-changed').value;" onfocus="focusFlag = 1;" onblur="focusFlag = 0;">
</body>

请阅读上一篇文章中的评论,但您应该全面了解正在发生的事情。更改正在删除对焦点的检查,并在每个输入中放置listner(onkeypress)。函数交互应该采用2个值 - 事件和输入id以便下一个焦点。同时关注新元素应该改变startFieldValue。 很抱歉不写代码本身,但是有点晚了,我真的需要睡一觉。

答案 2 :(得分:-3)

不要使用jQuery blur()和focus()方法,而应使用原始的Javascript方法。例如:jQuery(selector)[0] .blur(); 就我而言,jQuery的方法只适用于Opera浏览器。