2

フィールドが空かどうかを検証するためのこのコードがあります。これは、無名関数を使用して入力のblurイベントにバインドされます。

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ここでの私の質問は、blurイベント内のバインドから戻り値を取得する方法があるかどうかです。

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 に答える