当元素失去焦点时,将触发javascript中的onblur事件。
onkeydown发生在按下键时具有焦点的元素上,并定期发生,直到释放键为止。
如果我想验证日期字段,则onkeydown事件涉及9和13(输入和Tab键)。但是,当我按Enter键时,我会收到重复的警报消息。当然,在这种情况下,我们有两个测试,onblur和onkeydown事件。
这是html代码:
<html:text onblur="return onDateChange(this);" onkeydown="return onDateKeyPress(this);"/>
onDateChange()方法是:
function onDateChange(obj){ //validateField is an externatl javascript method which trigger an alert message if we have errors in date if(validateField(obj,'date',dateFormat)){ //do instructions } }
最后onDateKeyPress()方法是:
function onDateKeyPress(obj){ if(window.event.keyCode == 9) { if(validateField(obj,'date',dateFormat)) { //do instructions } } if(window.event.keyCode == 13) { if(validateField(obj,'date',dateFormat)) { //do instructions } } }
因此,问题是只有 一个 显示警报消息。有什么建议么?
你可以用jQuery轻松做到
$('#text_field_id').bind({ blur: function(event) { if(validateField(this,'date',dateFormat)){ //do instructions } }, keydown: function(event) { if(event.keyCode == 9) { if(validateField(this,'date',dateFormat)) { //do instructions } } if(event.keyCode == 13) { if(validateField(this,'date',dateFormat)) { //do instructions } } } });
您不需要在文本元素中包含onclick或onkeydown。您想在所有情况下执行相同指令还是执行不同指令的一个小问题???如果要执行相同的指令,则可以删除许多代码。
onclick
onkeydown