Jquery专注于活动

时间:2011-08-01 09:31:32

标签: jquery

我有一个有焦点事件的文本框。 每当文本框失去焦点时(Tab,鼠标单击表单的任何其他部分),根据某些条件,将调用用户编写的功能来消除警报。

现在,我的表单也有一个按钮,当我点击按钮时,填充文本框的按钮会调用textOut事件而不是按钮点击事件。

如何停止按钮点击时调用文本框的fucoutout事件?

 ("$textbox").focusout(function(){
validation;
alert("message");
});

("$btn").click(function(){
----
});

任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:8)

我已将您的点击事件更改为mousedown(因此它会先触发)并使用变量来跟踪您的点击次数:

var buttonClicked = false;

$('#txt1').focusout(function(){
    if(!(buttonClicked)){
        alert('BlurEvent');
    }else{
        buttonClicked = false;
    }
});

$('#btn').mousedown(function(event){
    alert('ClickEvent');
    buttonClicked = true;
});

http://jsfiddle.net/924SZ/

修改

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你这是你在这里做的唯一错误是错误地放置'$'美元符号。

这个怎么样? (假设TextBoxclass="textbox"Buttonclass='btn'

$(".textbox").focusout(function(){
    alert('MsgBox');
});

$(".btn").click(function(){
    alert('Button');    
});

如果您有ID而不是class

,请按以下方式更改选择器
$("#textbox") AND $("#btn")

http://jsfiddle.net/dAa2R/6/