自定义验证jquery插件

时间:2012-10-11 23:28:47

标签: jquery twitter-bootstrap jquery-validate

我有一个由validate jquery插件验证的表单。

<form action="" id="contact-form" class="form-horizontal">
    <fieldset>
        <div class="control-group">
            <label class="control-label" for="name">Nome:</label>
            <div class="controls">
                <input type="text" class="input-xlarge" name="name" id="name" placeholder="Indique o seu nome" />
            </div>
        </div>
        <div class="control-group">
            <label class="control-label" for="email">Email:</label>
            <div class="controls">
                <input type="email" class="input-xlarge" name="email" id="email" placeholder="Indique o seu email" />
            </div>
        </div>
        <!-- ... -->
    </fieldset>
</form>

脚本代码:

$('form#contact-form').validate({
    rules: {
        name: {
            minlength: 2,
            required: true
        },
        email: {
            required: true,
            email: true
        },
        // ...
    },
    highlight: function(label) {
        $(label).closest('.control-group').addClass('error').removeClass('success');
    },
    success: function(label) {
        label.closest('.control-group').addClass('success');
    },
    submitHandler: function(form) {
        $('form#contact-form').slideUp("slow", function() {
            $(this).before('<div class="alert alert-success"><h4>Informação</h4>Mensagem Enviada com sucesso.</div>');
            setTimeout(function () {
                $('#modal').modal('hide');
            }, 3000);
        });
        return false;
    }
});

我有两个问题:

  1. 他们需要的是当错误被纠正时,.error 删除了类,删除了生成的标签。
  2. 我必须放置一个具有特定价值的元素的规则是什么 例如,数字8?
  3. 当元素包含错误时,代码如下所示:

    <div class="control-group error">
        <label class="control-label" for="email">Email:</label>
        <div class="controls">
            <input type="email" class="input-xlarge" name="email" id="email" placeholder="Indique o seu email">
            <label for="email" generated="true" class="error" style="">Por favor introduza um endereço de email válido.</label>
        </div>
    </div>
    
    错误更正时

    ,代码如下:

    <div class="control-group error success">
        <label class="control-label" for="name">Nome:</label>
        <div class="controls">
            <input type="text" class="input-xlarge" name="name" id="name" placeholder="Indique o seu nome">
            <label for="name" generated="true" class="error" style=""></label>
        </div>
    </div>
    

1 个答案:

答案 0 :(得分:1)

  1. 将您的成功功能更改为:

    success: function(label) {
        label.closest('.control-group').removeClass('error').addClass('success');
    }
    

    从html-tag中删除generated = true param是不明智的。我过去做过这件事,只会增加验证功能的麻烦。

  2. 您可以添加方法:

    $.validator.addMethod("equalTo", function(value, element, param) { return (value == param); });
    

    比你的规则:

    name: {
        minlength: 2,
        required: true,
        equalTo: "8"
    } 
    
相关问题