如果验证良好,我想验证一个字符串并显示成功消息,我有这个:
$(document).ready(()=>{
console.log("Pagina cargada...");
jQuery.validator.addMethod('testWord', function (value, element) {
var validator = this;
console.log("Value ---> "+/^(El\s|La\s|L')\w+\sés\s\w+/.test(value))
var res = /^(El\s|La\s|L')\w+\sés\s\w+/.test(value)
if(res){
console.log("in if")
var errors = {};
errors[element.name] = "ok";
validator.showErrors(errors);
return false
}else{
console.log("in else")
var errors = {};
errors[element.name] = "not ok";
validator.showErrors(errors);
return false
}
});
$('form[id="second_form"]').validate({
rules: {
test: {
required: true,
testWord: true,
}
}
});
})
而且它不起作用,它没有显示消息。 这是我用来测试的词:
我把截图放在这里:
答案 0 :(得分:1)
这是因为你的表单输入没有 name="test"
还有另一个问题,该方法总是返回 false。
$(document).ready(() => {
console.log("Pagina cargada...");
jQuery.validator.addMethod('testWord', function(value, element) {
var validator = this;
console.log("Value ---> " + /^(El\s|La\s|L')\w+\sés\s\w+/.test(value))
var res = /^(El\s|La\s|L')\w+\sés\s\w+/.test(value)
if (res) {
console.log("in if")
var errors = {};
errors[element.name] = "ok";
validator.showErrors(errors);
return true; // <== originally return "false"
} else {
console.log("in else")
var errors = {};
errors[element.name] = "not ok";
validator.showErrors(errors);
return false
}
}, "bad input");
$('#second_form').validate({
rules: {
test: {
required: true,
testWord: true,
}
}
});
})
<form id="second_form">
<input name="test" type="text">
</form>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/jquery-validation@1.19.3/dist/jquery.validate.min.js"></script>