1

在过去的一个小时里,我一直在玩弄这个,最后我想就导致这个问题的原因寻求一些建议/帮助。我正在使用 RegEx 创建一个小回退,第一个输入工作正常,但第二个返回未定义。这是HTML:

<input type="email" value="this@matches.com" />
<input type="text" pattern="[A-Za-z]{3}" value="ABC" />

您将从 jsFiddle 和 Console 中看到,它为 type="email" 输入打印“成功”,但为模式回退返回未定义。我基本上想重用相同的函数并将参数传递给它并动态获取返回的值。

我觉得这可能是问题所在:

var patternFallback = $(this).attr('pattern')

...也许它需要以某种方式“转换”让 JS 将其读取为 RegEx?

如果您可以提供帮助,这是我的 jsFiddle,谢谢!该脚本是完整代码的一部分,其中包括问题区域、循环元素和我通过函数传递的变量:http: //jsfiddle.net/fTk7e/

提前谢谢了。

4

3 回答 3

2
var patternFallback = $(this).attr('pattern')

您调用函数的“this”的值是对文档对象的引用。您需要在 each() 调用中移动此变量定义。这就是你变得不确定的原因。

你应该从字符串中创建一个正则表达式。您不能在字符串上调用 .test() 。

var patternFallback = RegExp($(this).attr('pattern'));
于 2013-06-11T20:08:21.563 回答
1
new RegExp($(this).attr('pattern'));
于 2013-06-11T20:05:06.017 回答
0

我同意火箭哈兹曼的观点。给输入一个 ID 并以这种方式进行测试。

<input id="myEmailId" type="email" value="this@matches.com" />
<input id="myTextId" type="text" pattern="[A-Za-z]{3}" value="ABC" />

在javascript中:

var patternFallback = $("#myTextId").attr('pattern');
于 2013-06-11T20:13:23.177 回答