这两天在写页面时,需要自己添加一个验证规则。input输入框添加了:
data-parsley-apiName_unique_name data-parsley-apiName_unique_name-message="[@s.m'global.apidev.add.info1'/]"
这两行代码,目的是为了校验所输入参数在数据库的唯一性。
<div class="form-group">
<label class="col-sm-3 control-label">[@s.m"global.apidev.add.interfaceName"/]</label>
<div class="col-sm-7">
<input type="text" name="apiName" id="apiName"
class="form-control"
data-parsley-apiName_unique_name
data-parsley-apiName_unique_name-message="[@s.m'global.apidev.add.info1'/]"
data-parsley-required-message="[@s.m'global.apidev.add.info2'/]"
data-parsley-maxlength="255"
data-parsley-maxlength-message="[@s.m'global.apidev.add.info3'/]"
data-parsley-trigger="blur"
placeholder="[@s.m'global.base.inputInfo'/]"
required="required">
</div>
<span class="col-sm-1 asterisk">*</span>
</div>
页面如下:
写的js代码如下:
window.ParsleyConfig = window.ParsleyConfig || {};
window.ParsleyConfig.validators = window.ParsleyConfig.validators || {};
(function($) {
window.ParsleyConfig = $.extend(true, {}, window.ParsleyConfig, {
validators: {
/**
* 接口管理添加:接口名称唯一性验证
*/
apiName_unique_name: {
fn: function (value) {
debugger;
var exists = true;
$.ajax({
type:'post',
url:'checkUnique1.shtml',
data:{apiName:value},
async:false,
success:function(result){
exists = result != 'exists';
}
});
return exists;
},
priority: 32
}
}
});
}(window.jQuery || window.Zepto));
但是不起效果。各种搜资料和别人写的代码对比,都没有发现问题。一度怀疑人生。
无意中思考会不会自定义的校验要小写,试了之后发现果然。上面的apiName_unique_name一律改为apiname_unique_name之后,一切正常。