返回bool值时出现jquery错误

时间:2013-03-04 17:44:24

标签: javascript jquery

我是javascript的新手,我无法返回函数的布尔值..我正在验证文本框是否为空,如果空的帮助请返回false?

validateForm : function() {
    $('.requiredField :input').each(function(){
        if ('input[type=text]'){
            if($(this).val().length === 0){
                    $(this).addClass('warning');
                    var  errorMsg = $('<br /><span>Please Fill in the TextBox</span>').addClass('warning');
                    errorMsg.insertAfter(this);
                    $(errorMsg).css('color','red');
                    $('.warning').css('border-color','red');
            //$(this).focus(function(){
                //$(this).removeClass('warning');   
                //$(this).parent().children('span').remove();
                //$(this).parent().children('br').remove();         
            //});
                    return false;
                }
            else 
                return true;
            }
        }); 

},
Form.validateForm(); // call to the function 

5 个答案:

答案 0 :(得分:2)

return来自 .each()。这不会使您的函数返回值。

.each()循环中,return false;就像使用break;一样,return true;就像使用continue;

您需要在.each()声明 之外的变量,在循环中设置其值,然后在之后将其返回循环。

答案 1 :(得分:0)

检查此行

if ('input[type=text]'){

应该是

 if($('input[type=text]')){

答案 2 :(得分:0)

你可以试试这个:

$('.requiredField :input').each(function(){
var i=$(this).val();

if(i == '' || i == null)
 {
 //execute your codes
 return false;
 }else{
 return true;
 }
});

答案 3 :(得分:0)

您似乎正在尝试编写插件?请尝试以下代码:

(function($) {
    $.fn.validateForm = function()
    {
        var formID = $(this).attr('id');

        $('#'+ formID +' input[type=submit]').click(function(e)
        { 

            e.preventDefault();

            $('input[type=text]').each(function(){

                if($(this).val().length === 0){                 

                        $(this).addClass('warning');
                        var  errorMsg = $('<span>Please Fill in the TextBox</span>').addClass('warning');
                        errorMsg.insertAfter(this);
                        $(errorMsg).css('color','red');
                        $('.warning').css('border-color','red');          
                        return false;
                }else{
                    return true;
                }
            });
        });
    };
})(jQuery);

答案 4 :(得分:0)

正如@RocketHazmat所提到的,你的函数需要聚合内部循环的结果并有一个退出点以验证(并添加css classes / html元素)每个输入。< / p>

你需要做这样的事情:

validateForm : function () {

        var invalidInputs = [];

        // only test the type='text' inputs
        $('.requiredField :input[type="text"]').each(function () {

            // if there is no value
            if ($(this).val() == undefined || $(this).val().length == 0) {

                $(this).addClass('warning');
                var errorMsg = $('<br /><span>Please Fill in the TextBox</span>').addClass('warning');
                errorMsg.insertAfter(this);
                $(errorMsg).css('color','red');
                $('.warning').css('border-color','red');

                // add the invalid input to an array
                invalidInputs.push($(this));
            }
        }); 

        // The form is only valid for no invalid inputs were found.
        return invalidInputs.length == 0;
    }