AngularJS 使用 ng-pattern 的验证适用于桌面浏览器,但不适用于移动设备
AngularJS validation with ng-pattern works in desktop browser but not mobile
我写了一个非常简单的正则表达式来确保某些用户输入是带有单个 space 的字母数字,如下所示:
<input type="text" ng-minlength="5" ng-maxlength="8" ng-pattern="/^[0-9A-Z]*\s[0-9A-Z]*$/gi" required placeholder="Postcode" ng-model="addr.postcode" class="form-control" name="postcode" />
<div class="col-xs-12" ng-messages="myform.postcode.$error" ng-if="myform.$submitted || myform.postcode.$dirty">
<div class="text-warning" ng-message="minlength">Postcode is too short.</div>
<div class="text-warning" ng-message="pattern">Must contain a space.</div>
<div class="text-warning" ng-message="maxlength">Postcode is too long.</div>
</div>
当我在桌面 chrome 中测试它时,它很有用。如果我的输入不包含 space,我会收到验证错误。当我输入 space 时错误清除。例如 "AB12 3CD" 通过,"AB123CD" 失败,这是我所期望的。
如果我在移动设备上打开相同的页面(我已经用 iPhone 5 & 6 和 Windows Phone 8.1 进行了测试)无论输入如何,模式总是失败.例如 "AB12 3CD" 和 "AB123CD" 都失败了。
这是全局g选项。如果我将正则表达式更改为
ng-pattern="/^[0-9A-Z]*\s[0-9A-Z]*$/i"
它适用于移动版和桌面版
我写了一个非常简单的正则表达式来确保某些用户输入是带有单个 space 的字母数字,如下所示:
<input type="text" ng-minlength="5" ng-maxlength="8" ng-pattern="/^[0-9A-Z]*\s[0-9A-Z]*$/gi" required placeholder="Postcode" ng-model="addr.postcode" class="form-control" name="postcode" />
<div class="col-xs-12" ng-messages="myform.postcode.$error" ng-if="myform.$submitted || myform.postcode.$dirty">
<div class="text-warning" ng-message="minlength">Postcode is too short.</div>
<div class="text-warning" ng-message="pattern">Must contain a space.</div>
<div class="text-warning" ng-message="maxlength">Postcode is too long.</div>
</div>
当我在桌面 chrome 中测试它时,它很有用。如果我的输入不包含 space,我会收到验证错误。当我输入 space 时错误清除。例如 "AB12 3CD" 通过,"AB123CD" 失败,这是我所期望的。
如果我在移动设备上打开相同的页面(我已经用 iPhone 5 & 6 和 Windows Phone 8.1 进行了测试)无论输入如何,模式总是失败.例如 "AB12 3CD" 和 "AB123CD" 都失败了。
这是全局g选项。如果我将正则表达式更改为
ng-pattern="/^[0-9A-Z]*\s[0-9A-Z]*$/i"
它适用于移动版和桌面版