我需要触发输入更改事件,但前提是值已更改。我需要通过键盘事件完成此操作。有没有办法调用浏览器的更改机制,该机制会触发更改事件触发,还是不依赖于值是否被修改?
示例:
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键盘触发器来导航。
答案 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浏览器。