我有一个有焦点事件的文本框。 每当文本框失去焦点时(Tab,鼠标单击表单的任何其他部分),根据某些条件,将调用用户编写的功能来消除警报。
现在,我的表单也有一个按钮,当我点击按钮时,填充文本框的按钮会调用textOut事件而不是按钮点击事件。
如何停止按钮点击时调用文本框的fucoutout事件?
("$textbox").focusout(function(){
validation;
alert("message");
});
("$btn").click(function(){
----
});
任何人都可以帮助我吗?
答案 0 :(得分:8)
我已将您的点击事件更改为mousedown(因此它会先触发)并使用变量来跟踪您的点击次数:
var buttonClicked = false;
$('#txt1').focusout(function(){
if(!(buttonClicked)){
alert('BlurEvent');
}else{
buttonClicked = false;
}
});
$('#btn').mousedown(function(event){
alert('ClickEvent');
buttonClicked = true;
});
修改强>
var buttonClicked = false;
$('#txt1').focusout(function(){
if(!(buttonClicked)){
// do normal focusout code.
}else{
// button was clicked - dont execute some code.
buttonClicked = false;
}
//this always executes regardless of focusout or button click
var reply =confirm("Are you happy with the input?");
});
$('#btn').mousedown(function(event){
buttonClicked = true;
});
答案 1 :(得分:0)
您是否未触发focusout
事件后跟按钮click
事件?
可能alert
阻止按钮click
完成。
尝试删除alert
以测试两个事件是否都会触发。
更新
可能mousedown
事件将起作用而不是click
,因为这将在mousedown
上注册,而不是在mouseup
将触发的click
事件上注册
答案 2 :(得分:0)
我认为JQuery选择器与$
一起使用。所以IMO你这是你在这里做的唯一错误是错误地放置'$'美元符号。
这个怎么样? (假设TextBox
有class="textbox"
而Button
有class='btn'
)
$(".textbox").focusout(function(){
alert('MsgBox');
});
$(".btn").click(function(){
alert('Button');
});
如果您有ID
而不是class
$("#textbox") AND $("#btn")