有一种方法可以从jQuery事件中获取返回值吗?

时间:2012-04-23 12:33:30

标签: jquery anonymous-function

我有这段代码来验证字段是否为空。它通过匿名函数绑定到输入的模糊事件中。

isValidText = function(){        
    if ($(this).val().trim() == ""){
        //some code here
        return false;
    }
    //some code here
    return true;
}

$("#someElement").blur(isValidText);

在某个时刻,我想从绑定函数中获取返回值,如下所示:

//this return a jQuery object
var isValid = $("#someElement").blur(); 
//but I want the boolean from the isValidText

这是不可能的,因为blur()方法返回jQuery对象而不是isValidText函数的返回值。

我的问题是,是否有办法从模糊事件中的isValidText绑定中获取返回值。

3 个答案:

答案 0 :(得分:2)

$("#someElement").blur(function() {
   var ret = isValidText.call(this); 
});

OR

$("#someElement").blur(function() {
   var ret = isValidText.apply(this, arguments); // if you work with some hadler
});

答案 1 :(得分:1)

您可以使用codeparadox解决方案,或者您可以在#someElement上添加HTML5数据属性并查看:

isValidText = function(){ 
    var $this = $(this);
    $this.data("isValid", !($this.val().trim() === ""));
}
$("#someElement").blur(isValidText);

/* Further down when you want to check if its valid or not */
if(!$("#someElement").data("isValid")) { 
   alert('someElement is not valid!') ;
}

答案 2 :(得分:1)

我会这样做

var isValid;

isValidText = function(valueToCheck){        
    if ($.trim(valueToCheck) == ""){
        //some code here
        return false;
    }
    //some code here
    return true;
}

$("#someElement").on('blur', function() {
    isValid=isValidText(this.value);
    //or just : 
    if (isValidText(this.value)) {
        //do something
    }
});

FIDDLE