1

我是 javascript 的新手,我无法返回函数的布尔值。我正在验证文本框是否为 null,如果它的帮助为空,请返回 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 
4

5 回答 5

2

您是return从. _ .each()这不会使您的函数返回值。

在一个.each()循环中,return false;就像 usingbreak;return true;using continue;

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

于 2013-03-04T17:48:42.490 回答
0

检查这一行

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

它应该是

 if($('input[type=text]')){
于 2013-03-04T17:51:58.517 回答
0

你可以试试这个:

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

if(i == '' || i == null)
 {
 //execute your codes
 return false;
 }else{
 return true;
 }
});
于 2013-03-04T17:59:48.707 回答
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);
于 2013-03-04T19:00:26.013 回答
0

正如@RocketHazmat 所提到的,您的函数需要聚合来自内部循环的结果并具有单个退出点,以便验证(并添加 css 类/html 元素)每个输入。

你需要做这样的事情:

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;
    }
于 2013-03-04T19:38:15.493 回答