我在最后一小时玩弄了这件事,我终于要求就导致这个问题的原因提出一些建议/帮助。我正在使用RegEx创建一个小的回退,第一个输入工作正常,但第二个返回undefined。这是HTML:
<input type="email" value="this@matches.com" />
<input type="text" pattern="[A-Za-z]{3}" value="ABC" />
您将从jsFiddle和Console中看到它为type =“email”输入打印“Success”,但返回undefined以用于模式回退。我基本上想要重用相同的函数并将参数传递给它并获得动态返回的值。
我觉得这可能是问题界限:
var patternFallback = $(this).attr('pattern')
......也许它需要'转换'让JS把它读作RegEx?
如果你能提供帮助,这是我的jsFiddle,谢谢!该脚本是完整代码的一部分,其中包括问题区域,循环元素以及我通过函数传递的变量:http://jsfiddle.net/fTk7e/
非常感谢提前。
答案 0 :(得分:2)
var patternFallback = $(this).attr('pattern')
调用函数的'this'的值是对文档对象的引用。您需要在each()调用中移动此变量定义。这就是你未定义的原因。
你应该从字符串中创建一个正则表达式。你不能在字符串上调用.test()。
var patternFallback = RegExp($(this).attr('pattern'));
答案 1 :(得分:1)
new RegExp($(this).attr('pattern'));
答案 2 :(得分:0)
我同意Rocket Hazman。为输入提供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');