首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jQuery验证-如何忽略内联模式验证

jQuery验证-如何忽略内联模式验证
EN

Stack Overflow用户
提问于 2013-02-20 01:14:52
回答 1查看 1.5K关注 0票数 0

我已经做好了准备,需要实现三个单独的目标:

  1. 客户端验证(这是使用jQuery验证插件完成的)
  2. 整洁的数字格式(这是使用jQuery autoNumeric插件完成的)
  3. iPad/iPhone键盘弹出的只是数字字段(这是使用输入元素上的pattern="0-9*“属性完成的),我不能使用HTML5 type="number",因为autoNumeric插件不支持它)。

问题是,当它工作时,验证插件会引发浮点值错误(无效格式),因为十进制分隔符与pattern="0-9*“regexp不匹配。下面请找到一个示例输入字段:

代码语言:javascript
运行
复制
<input type="text" id="acme" name="acme" size="4" 
 data-autonumeric="{vMin: '0.00'}" class="required number autoNumeric" 
 min="0.0" step="0.01" pattern="[0-9*]">

是否有一种方法可以禁用所有已验证字段的模式验证(最好是全局验证),或者每个字段都禁用模式验证?或者,在iPad/iPhone上强制使用数字键盘的另一种方式,并不意味着type="number“或pattern="0-9*"?

编辑:

我找到了解决这个问题的方法,请看下面的答案。如果有人有更好的想法,请分享。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-20 08:34:49

通过在jQuery验证中重写模式验证方法,我找到了一种方法。如果有人知道更好的解决方案,请评论。

这是密码。它适用于jQuery.validator.addMethod(“模式”)。添加(忽略\d* )-要在iOS中显示数字键盘,可以将模式属性值设置为"0-9“或"\d",我使用该值(源http://developer.apple.com/library/ios/#documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html)。请注释掉这一行,以查看问题正在执行中。

代码语言:javascript
运行
复制
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript" src="https://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.0/jquery.validate.min.js"></script>
<script type="text/javascript" src="https://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.0/additional-methods.min.js"></script>
<script type="text/javascript" src="jquery.metadata.js"></script>
<script type="text/javascript" src="autoNumeric-1.7.4.js"></script>
<form id="test">
<input type="text" id="acme" name="acme" size="4" data-autonumeric="{vMin: '0.00'}"
    class="required number autoNumeric" min="0.0" step="0.01" pattern="\d*" value="1.00">
</form>
<script type="text/javascript">
    $(document).ready(function () {
        $("#test").validate();
    });

    // This overrides the additional-methods.min.js implementation to ignore pattern="\d*" validation
    jQuery.validator.addMethod("pattern", function (e, t, n) {
        return this.optional(t) || n == "\\d*" ? !0 : (typeof n == "string" && (n = new RegExp("^(?:" + n + ")$")), n.test(e))
    }, "Invalid format.");
</script>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14970650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档