1

我有一个表单,所以当用户单击编辑按钮时,文本替换为输入 type="email" 并且还匹配给定的电子邮件模式

               <label for="name-c">Email-Id:</label>
             <label class="email">abc@xyz.com</label>
                 <button class="edit">edit</button>

jQuery代码:

$('.edit').click(function () {
  var email=$('.email').text();
   $('.email').replaceWith(function () {
     var pattern = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6}$/;
     return '<input type="email" id="email" name="email" title="Enter email like abc@xyz.com" required placeholder="abc@xyz.com"   pattern="' + pattern + '"'+'class="ui-input-text ui-body-c ui-corner-all ui-shadow-inset"/>'});
     $('#email').val(email);});

我收到错误消息,尽管它是正确的,但请输入给定的模式。但是当我通过简单的放置input type="email"和模式匹配时,它的匹配。我完全混淆了我的代码不正确的地方。

4

1 回答 1

0

我认为你不需要模式。当您指定时,type="email"它是控制该值的导航器。我使用默认参数测试 [here][1],它适用于我的 chrome 和 firefox。但是当我添加像“。*”这样的模式时,检查失败了,这很奇怪。

在 W3C 给出的规范中,它们允许属性模式,但是当您向下滚动到时,它们的值将使用指定的值进行检查。

所以你不需要添加模式检查是隐式的。

编辑 :

试试这个正则表达式 ^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?: .[a-zA-Z0-9-]+)+$ 我采用 w3c 规范中定义的正则表达式,并将最后的 * 更改为 +。

编辑 :

最后我发现了错误,实际上当您在此处使用 jquery 添加输入时,它错过了反斜杠,解决方案http://jsfiddle.net/KaBut/6/

于 2012-08-14T08:23:07.230 回答