1、FA的文档 和 官方文档

一般的使用,看FA文档即可
https://doc.fastadmin.net/doc/179.html#toc-5

如果有更高级的用法,看官方文档
https://validator.niceue.com/docs/core-rules.html#section-1
2、当A字段不为空时,B字段必填

下拉框、文本框使用required(#c-a:filled)
单选框、复选框使用required(#c-a:checked)

另外当A字段可用时,B字段必填,required(#c-a:enabled)

3、动态设置表单里的字段的校验规则

例如:

A字段或B字段任意一个为空时,C字段提示必填
D字段的检验比较复杂,需要编写一段复杂前端的JS,并按不同的场景提示不同的提示语
D字段需要触发后端校验逻辑
A字段根据url的入参判断是否需要必填

JS里动态设置validator 校验,关键点:JS调用$('#edit-form').validator来设置校验规则。
html:

  <div class="form-group">
    <label class="control-label col-xs-12 col-sm-2">测试A:</label>
    <div class="col-xs-12 col-sm-8">
                    
        <select name="testA" id="testA"  class="form-control selectpicker">
            <option value="">请选择...</option>
            <option value="1">Male</option>
            <option value="2">Female</option>
            <option value="3">Other</option>
        </select>

    </div>
</div>

<div class="form-group">
    <label class="control-label col-xs-12 col-sm-2">测试B:</label>
    <div class="col-xs-12 col-sm-8">                        
        <input id="testB"  class="form-control" name="row[b]" >    
    </div>
</div>

<div class="form-group">
    <label class="control-label col-xs-12 col-sm-2">测试C:</label>
    <div class="col-xs-12 col-sm-8">                        
        <input id="testC"  class="form-control" name="row[c]" >    
    </div>
</div>

<div class="form-group">
    <label class="control-label col-xs-12 col-sm-2">测试D:</label>
    <div class="col-xs-12 col-sm-8">                        
        <input id="testD"  class="form-control" name="row[d]" >    
    </div>
</div>

js:

var diyRules ={};
$.extend(diyRules, {

    myrule1: function (element) {
        if ($("#testA").val() == "" || $("#testB").val() == "") { 
            $.extend(fieldsRules, {'row[c]': 'required; '});
        }
        
        //如果直接返回文本,则表示失败的提示文字
        //如果返回true表示成功
        //如果返回Ajax对象则表示远程验证
        if (element.value.toString().match(/^\d+$/)) {
            return '不能为纯数字';
        }
        if (!element.value.toString().match(/^[a-zA-Z0-9\-_]+$/)) {
            return '请输入字母或数字组合';
        }
        return $.ajax({
            url: 'ajax/check',
            type: 'POST',
            data: {id: $("#c-title").val(), name: element.name, value: element.value},
            dataType: 'json'
        });
    },
    myrule2: function (element) {
        return $("#testA").val() == "" || $("#testB").val() == "";                        
    }
}                

);

var fieldsRules ={};
//演示1:在js代码来设置字段验证规则
// $.extend(fieldsRules, {'row[b]': 'required;'});
// $.extend(fieldsRules, {'row[c]': 'required; '});

//演示2:在自定义一个规则,并使用此规则,提示信息可以自定义
$.extend(fieldsRules, {'row[d]': 'myrule1'});

//演示3:依赖其他字段的值来设置必填
$.extend(fieldsRules, {'row[c]': 'required(myrule2)'});

$('#add-form').validator({

fields: fieldsRules,
rules: diyRules

})

以上使用$.extend()的好处是,可以实现动态合并fieldsRules,例如根据页面传入的url的值来判断是否要设置表单某个字段的必填规则。

几个特别要注意的
1、使用了js增加校验的能力,html里这些字段就不要增加data-rule="XX" 的字眼,data-rule都不要带上。否则校验就失效了。

2、如果是单选框的必填,不是使用required;而是使用checked

$('#post-form').validator({

fields: {
    'row[axureversion]': 'checked; '
}

})

5、如何调用后台接口校验

如果只是调用后端校验,使用remote(URL)

如果还有其他的个性化的,使用自定义校验+ajax请求后端
参考官方文档:https://doc.fastadmin.net/doc/179.html#toc-5
6、一组字段至少填写其中一个 required(form, .contact)

输入图片说明
7、如何更改提示的位置 html里 data-validator-option="{msgClass:'n-bottom'}"

输入图片说明
如何不改变require-form的方式实现呢?

输入图片说明
8、不小于0.5的小数

标签: none

添加新评论