Javascript jQuery表单验证插件:出错时返回false

Javascript jQuery表单验证插件:出错时返回false,javascript,jquery,forms,validation,plugins,Javascript,Jquery,Forms,Validation,Plugins,在阅读了关于如何制作jQuery插件的教程之后,我决定试一试并制作一个表单验证插件。到目前为止,我已经成功地实现了我所希望的90%,剩下的唯一一件事就是在发现空字段时使表单返回false 我把我的全部代码放在了JSFIDLE上,但它似乎不起作用。可能是因为我需要包含插件文件,而不是将其粘贴到脚本部分。但我正在分享它,以防你需要查看整个代码 插件工作流 我试过的 因此,用户只需调用$('.required').border()和它应该处理其余的部分。查看我在下面的代码中使用有效变量的方式,而不是

在阅读了关于如何制作jQuery插件的教程之后,我决定试一试并制作一个表单验证插件。到目前为止,我已经成功地实现了我所希望的90%,剩下的唯一一件事就是在发现空字段时使表单返回false

我把我的全部代码放在了JSFIDLE上,但它似乎不起作用。可能是因为我需要包含插件文件,而不是将其粘贴到脚本部分。但我正在分享它,以防你需要查看整个代码

插件工作流 我试过的
因此,用户只需调用
$('.required').border()和它应该处理其余的部分。

查看我在下面的代码中使用
有效变量的方式,而不是
window.cnt

jQuery.fn.border = function() {

   var valid = true;

   this.each(function() {
    var ele = jQuery(this);
    var cur_val, ele_name;
    if(// element is input, select, or textarea)
    {
       cur_val = ele.val();
    }
    else if(// element is radio)
    {
       ele_name = ele.attr('name');
       cur_val = $('input:radio[name="'+ele_name+'"]:checked').val();
    }
    else if(// element is checkbox)
    {
       ele_name = ele.attr('name');
      cur_val = $('input:checkbox[name="'+ele_name+'"]:checked').val();
    }

    if(! cur_val) // need to do something here to prevent form submission
    {
        valid = false;
        if(// input, textarea, select element)
        {
           ele.addClass('border');
        }
        else if(// radio or checkbox element)
        {
           ele.parent().addClass('border');
        }               
    }
    else // need to do something here to make the form submission happen
    {               
        if(// input, select, textarea)
        {
            ele.removeClass('border');
        }
        else if(radio or checkbox)
        {
            ele.parent().removeClass('border');
        }
    }

    });
    return valid;       
}

调用$.border函数时是否尝试重置cnt变量?

它仍然提交表单。我可以在一瞬间看到边界正在应用。因此
valid
变为
false
,但表单仍然会被提交。在
submit()
处理程序中使用表单时,需要执行
返回$(“.required”).border()return$(.required),$(this)).border()。否则,提交一个表单将尝试验证页面上的所有表单。Yep。我也试过了。如果字段为空,则可以正常工作。但是,当所有字段都被填充时,这些元素的边界将被删除;但是,在这种情况下,表单无法提交。我还尝试了以下操作以查看返回的内容:
var abc=$('.required,$(this)).border();警报(abc)
奇怪的是,当所有字段都填写完毕时,我会在警报框中显示
true
,但表单没有提交。你的意思是在其他部分中设置make
cnt=0
?他的意思是在jQuery.fn.border函数的开头将其设置为0。
<script type="text/javascript">
    $(function(){
        $('form').submit(function(){
            $('.required').border();
            if(window.cnt > 0)
            {               
                return false;
            }
            else
            {               
                return true;
            }
        });
    });
</script>
$(function(){
    $('form').submit(function(){
        $('.required').border(); // this line should take care of returning true or false for the submit function           
    });
});
jQuery.fn.border = function() {

   var valid = true;

   this.each(function() {
    var ele = jQuery(this);
    var cur_val, ele_name;
    if(// element is input, select, or textarea)
    {
       cur_val = ele.val();
    }
    else if(// element is radio)
    {
       ele_name = ele.attr('name');
       cur_val = $('input:radio[name="'+ele_name+'"]:checked').val();
    }
    else if(// element is checkbox)
    {
       ele_name = ele.attr('name');
      cur_val = $('input:checkbox[name="'+ele_name+'"]:checked').val();
    }

    if(! cur_val) // need to do something here to prevent form submission
    {
        valid = false;
        if(// input, textarea, select element)
        {
           ele.addClass('border');
        }
        else if(// radio or checkbox element)
        {
           ele.parent().addClass('border');
        }               
    }
    else // need to do something here to make the form submission happen
    {               
        if(// input, select, textarea)
        {
            ele.removeClass('border');
        }
        else if(radio or checkbox)
        {
            ele.parent().removeClass('border');
        }
    }

    });
    return valid;       
}