Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在jQuery验证器中使用addMethod验证全名?_Javascript_Jquery_Regex_Jquery Validate - Fatal编程技术网

Javascript 如何在jQuery验证器中使用addMethod验证全名?

Javascript 如何在jQuery验证器中使用addMethod验证全名?,javascript,jquery,regex,jquery-validate,Javascript,Jquery,Regex,Jquery Validate,我目前正在使用jqueryvalidate来验证表单数据,并且在几个字段中使用regex来使用模式检查有效性。然而,即使在通过addMethod应用了我的新验证方法之后,表单仍然允许人们仅使用全名字段中的名字提交表单 对于我的全名字段,我已经验证了我的正则表达式是否有效,方法是在字段上测试它,而不在表单上使用novalidate 正则表达式:^[a-zA-Z]{2,}\s[a-zA-Z]{1,}'?-?[a-zA-Z]{2,}\s?[a-zA-Z]{1,} 添加方法尝试 jQuery.valid

我目前正在使用jqueryvalidate来验证表单数据,并且在几个字段中使用regex来使用模式检查有效性。然而,即使在通过addMethod应用了我的新验证方法之后,表单仍然允许人们仅使用全名字段中的名字提交表单

对于我的全名字段,我已经验证了我的正则表达式是否有效,方法是在字段上测试它,而不在表单上使用novalidate

正则表达式:^[a-zA-Z]{2,}\s[a-zA-Z]{1,}'?-?[a-zA-Z]{2,}\s?[a-zA-Z]{1,}

添加方法尝试

jQuery.validator.addMethod("fullname", function(value, element) {
    return this.optional(element) || /^([a-zA-Z]{2,}\s[a-zA-z]{1,}'?-?[a-zA-Z]{2,}\s?([a-zA-Z]{1,})?)/.test(value);
}, 'Please enter your full name.');

如果输入的是单个姓名(例如John)而不是全名,则我的正则表达式应将其标记为无效并请求此人的全名。

您需要做两件事:

首先,如果验证通过,则返回true,否则返回false

第二,实际调用.validate中新添加的方法

这可以从以下几点看出:

jQuery.validator.addMethodfullname、functionvalue、元素{ 如果/^[a-zA-Z]{2,}\s[a-zA-Z]{1,}'?-?[a-zA-Z]{2,}\s?[a-zA-Z]{1,}?/.testvalue{ 返回true; }否则{ 返回false; }; },“请输入您的全名。”; $sample.validate{ 规则:{ 全名:{//对应于'Name'属性 要求:正确, fullname:true//将新方法附加到元素 } }, 提交人:函数形式,e{ e、 防止违约; console.log“该表单有效并已成功提交”; }, }; 提交
他的.addMethod函数中的逻辑绝对没有问题。返回this.optionalelement | |/^[a-zA-Z]{2,}\s[a-zA-Z]{1,}?-?[a-zA-Z]{2,}\s?[a-zA-Z]{1,}?/。testvalue确实会给出一个正确或错误的响应,并且正在使用一个与方法类似的正确结构的函数。通过省略this.optionalelement部分,即使所需规则为false,也会强制要求该字段。如果他在一个可选字段上使用你的方法版本,那么这个字段永远不会为空。完美的解决方案!我真不敢相信我忘了调用我的新方法。谢谢黑曜石@黑曜石在另一个网站上遇到了完全相同的问题,除了现在我实现了相同的addMethod并调用了该方法,而该网站正在验证的所有内容都是字段是否已填充。我将代码与您发送的代码进行了比较,结果完全相同。有什么想法吗?你的验证方法在哪里?你的表格在哪里?如果不显示这一点,没有人知道您是否正确调用了新规则。我实际上不知道.validate方法,因此我的问题。现在都修好了。谢谢大家!
<input id="full-name" name="Full_Name" type="text" class="form-control" placeholder="John Doe" required>