2

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

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模糊事件内部的绑定中获取返回值。

4

3 回答 3

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

或者

$("#someElement").blur(function() {
   var ret = isValidText.apply(this, arguments); // if you work with some hadler
});
于 2012-04-23T12:38:31.187 回答
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!') ;
}
于 2012-04-23T12:48:19.477 回答
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
    }
});

小提琴

于 2012-04-23T13:04:52.123 回答