我有一个包含输入的表单:
<input onchange="checkDomain(true); return false;" type="text" id="dsearch" value="" name="domain" maxlength="30"/>
在Opera,Chrome和IE中运行良好 - 但Firefox和Safari在调用函数checkDomain()
时遇到问题。我在函数中添加了一行进行调试:
function checkDomain(check)
{
console.log('checkDomain() called!');
// do rest of the stuff...
}
因此,Chrome / Opera / IE在输入文本并单击其他位置后调用该函数没有问题 - 但Firefox / Safari没有。任何人都有线索?
答案 0 :(得分:1)
也许onblur
最适合这个:
<input onblur="checkDomain(true); return false;" type="text" id="dsearch" value="" name="domain" maxlength="30"/>
答案 1 :(得分:1)
我不记得我在哪里阅读它,但你应该使用.keydown()
/ .keyup()
/ .keypress()
(无论你需要什么)而不是改变。至少input[type=text]
。
您也可以将.blur()
和.focus
用于各自的目的。
在你的问题中看到这一点:“在你输入文字并点击其他地方之后”,让我得出结论你需要.blur()函数。
$("input[type=text]").blur(function(){
console.log('checkDomain() called!')
});
答案 2 :(得分:0)
当您更改输入按键和按键的行为时会发生此问题。
您需要手动调用onchange
触发器才能触发它。
作为一个例子,考虑一下你的输入有一个jQuery函数,它可以在用户点击键盘时执行一些操作。
您需要致电input.trigger("onchange");
以确保在keypress
和keydown
/**
* Keyboard Manager
*/
(function($) {
$.fn.inputManager = function(options) {
};
options = $.extend(defaults, options);
// The key down event only use to manage key board language changes
var keyDown = function(e) {
//Do something
};
var keyPress = function(e) {
//Do something
};
return this.each(function() {
var input = $(this);
//The Firefox dose not trigger the input onchange when you change keypress and key down
//functions. So manually call it!
input.keypress(function(e) {
keyPress(e);
input.trigger("onchange");
});
input.keydown(function(e) {
keyDown(e);
input.trigger("onchange");
});
});
};
})(jQuery);