我正在尝试使用Ajax搜索\建议框。我使用jQuery来处理丢失焦点的文本框。但是,当我点击建议列表中的链接时,jQuery会触发模糊事件,并且不会遵循链接。这是jQuery代码:
$(document).ready(function() {
$('#lstxt').click(function() {
this.value = '';
});
$('#lstxt').blur(function() {
this.value = 'Database Search';
document.getElementById('ls').innerHTML='';
document.getElementById('ls').style.border='0px';
});
});
如果在建议列表中单击了一个链接(id =“ls_table”),我怎么能不触发.blur?
答案 0 :(得分:6)
var global_switch = false;
$('#ls_table').hover (
function () { global_switch = true; },
function () { global_switch = false; }
)
$('#lstxt').blur(function() {
if (global_switch) { return; } else { ...});
这只是概念验证。与往常一样,全局变量都很糟糕。看一下jQuery的data API来规避它。
干杯,
答案 1 :(得分:3)
我实现自己的方法时添加了一点延迟:
$('#lstxt').blur(function(){
setTimeout(function(){
// original blur code here
}, 250);
});
绝对不是最好的解决方案(但通常有效)。但Boldewyn的解决方案应该有效 - 假设在尝试分配之前已经创建了#ls_table。如果您经常创建/销毁#ls_table,则可以将事件绑定到父元素:
// just using the data API for jquery.
$('#ls').hover(
function(){ $('#ls').data('autocompleteover', 1); },
function(){ $('#ls').data('autocompleteover', 0); }
);
$('#lstxt').blur(function(){
if($('#ls').data('autocompleteover'))
return;
// original blur code here
}
答案 2 :(得分:0)
试试这段代码:
$(document).ready(function() {
$('#lstxt').click(function() {
this.value = '';
return true;
});
$('#lstxt').blur(function() {
this.value = 'Database Search';
$('#ls').html('').css('border',"0px");
return true;
});
});
编辑: 如果单击文本框外部,则会触发模糊。是lstxt文本框吗?
edit2:您需要取消绑定模糊事件并有条件地重新绑定它。我需要有关您的页面布局的更多信息,告诉您如何操作
答案 3 :(得分:0)
我管理类似的问题(在模糊时使用了一些自定义验证器,在点击关闭按钮之前触发了 - 但我想关闭对话框(点击)而没有触发此模糊事件) 输入代码(带验证器):
..
$(this).blur({validators: validators}, function(event){ // blur
(function($this){
validator_timeout = setTimeout(function(){ // validator_timeout is global
$this.validate(event.data.validators); // do some validation
}, 50); // delay just minimum of time, but enough to let other event to be fired
}($(this))); // passing $(this) to function
});...
和其他事件处理程序,如关闭对话框,当我们不想在验证时调用函数时,只需清除validator_timeout以抑制模糊:
click_function = function(){
clearTimeout(validator_timeout);
$( this ).dialog( "close" );
}
希望它对某人有用。