我正在开发一个在动态表单上使用jquery验证的遗留应用程序。现在我试图将每个文本区域输入的名称传递给验证,但不起作用,或者可能我做错了。我想验证内部的fieldName变量(见下文(。
<form class="comment_form" id="update_comment">
@foreach($user as $key => user)
<textarea class="form-control" name="comment[$key]"></textarea>
@endforeach
</form>
<script>
var $fieldName;
$.validator.addMethod("allowedChars", function (value) {
var reg = /^[A-Za-z0-9 _@./*!'"#&+-]*$/;
return reg.test(value);
});
//foreach loop here
var comment = document.getElementsByTagName("textarea");
for($i=0; $i < comment.length; $i++) {
fieldName = comment.name; // I want to the field name insode validate below
console.log(fieldName);
$("#update_comment").validate({
rules: {
fieldName: {
allowedChars: true
}
},
messages: {
fieldName: "Allowed special characters: _@./*!'"#&+-"
}
});
};
考虑以下内容。
var $fieldName;
$.validator.addMethod("allowedChars", function(value) {
var reg = /^[A-Za-z0-9 _@./*!'"#&+-]*$/;
return reg.test(value);
});
var opts = {
rules: {},
messages: {}
};
//foreach loop here
$("textarea").each(function(i, el) {
$fieldName = $(el).attr("name");
console.log($fieldName);
opts.rules[$filedname] = {
allowedChars: true
}
opts.messages[$fieldName] = "Allowed special characters: _@./*!'"#&+-";
});
$("#update_comment").validate(opts);
基于以下文件:https://jqueryvalidation.org/validate/
不确定这是不是正确的库或版本,因为你没有包括它们,但我认为这是正确的。
定义自定义规则的键/值对。键是元素(或一组复选框/单选按钮(的名称,值是由规则/参数对或纯字符串组成的对象。可以与类/属性/数据规则组合使用。每个规则都可以指定为具有依赖属性,以便仅在特定条件下应用该规则。
例如,如果有3个带名称的文本区域:Text1、Text2、Text3。生成的Object应该是这样的。
{
rules: {
Text1: {
allowedChars: true
},
Text2: {
allowedChars: true
},
Text3: {
allowedChars: true
}
},
messages: {
Text1: "Allowed special characters: _@./*!'"#&+-",
Text2: "Allowed special characters: _@./*!'"#&+-",
Text3: "Allowed special characters: _@./*!'"#&+-",
}
}