gpt4 book ai didi

angularjs - 禁用单个输入 (url) 上的 Angular 表单验证

转载 作者:行者123 更新时间:2023-12-01 02:19:45 24 4
gpt4 key购买 nike

我正在构建一个带有 URL 字段的 Angular 表单,该表单可以使用前缀 (http://) 或不使用前缀进行格式化。使用 Angular 的默认 url 验证需要 http://,所以我插入了以下正则表达式,它接受带前缀和不带前缀的:
<input type="text" id="siteAddress" name="siteAddress" ng-model="user.url" ng-pattern="/^(https?:\/\/)?([\dA-Za-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/" required>
这很好用,但是当我设置 type="url"时,Angular 的验证会覆盖我的自定义 ng-pattern。此表单仅适用于移动用户,因此 type="url"很重要,以便他们接收正确的键盘,因此他们的移动操作系统不会尝试自动更正他们的输入。

是否可以在不应用其默认验证的情况下使用 type="url",或者是否可以修改 Angular 的默认验证以使其不接受 url 前缀?

谢谢!

最佳答案

似乎没有官方 API 可以做到这一点,但您始终可以覆盖默认指令或使用具有更高优先级的指令来更改标准行为。

例如,angular 的 input指令从 $attributes 获取类型对象,因此您可以删除此属性。

directive('ignoreType', function() {
return {
priority: 500,
compile: function(el, attrs) {
attrs.$set('type',
null, //to delete type from attributes object
false //to preserve type attribute in DOM
);
}
}
});

Here is jsfiddle for it .

当然,此解决方案也可能会破坏其他使用 type 属性的指令的行为,因此请谨慎使用。

关于angularjs - 禁用单个输入 (url) 上的 Angular 表单验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21371559/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com