我有设置,需要实现三个不同的目标:
问题是,虽然它有效,但验证插件会引发浮点值的错误(无效格式),因为小数点分隔符与pattern =“[0-9] *不匹配“正则表达式。下面是一个示例输入字段:
<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上强制使用数字小键盘,这并不意味着类型=“数字”或模式=“[0-9 *]”?
修改
我找到了解决此问题的方法,请参阅下面的答案。如果有人有更好的想法,请分享。谢谢。
答案 0 :(得分:0)
我通过覆盖jQuery Validate中的模式验证方法找到了一种方法。如果有人知道更好的解决方案,请发表评论。
这是代码。它适用于jQuery.validator.addMethod(“pattern”...添加(忽略\ d * - 在iOS中显示数字键盘,可以将模式属性的值设置为“[0-9] “或”\ d “,我使用(来源http://developer.apple.com/library/ios/#documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html)。注释掉该行以查看实际问题。
<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>