【发布时间】:2020-07-22 08:02:07
【问题描述】:
我想获取所有表单元素(输入、文本区域等),以便在模糊时为所有这些元素添加功能。
由于 DOM 尚未加载,我得到了大多数元素的未定义。我尝试添加
$scope.$watch('$viewContentLoaded
但这不起作用,因为我不使用 ngView,也不需要 ngView。
当我添加超时延迟时它可以工作,但这不是最好的解决方案,因为不同环境的加载可能会有所不同
我试过了:
angular.element(document).ready
但这也没有得到元素。
这是有效的代码,但不是最佳解决方案:
$timeout(() => {
const allFormElements = $element[0].querySelectorAll('input, textarea');
const formElement= angular.element(allFormElements[0]);
formElement.on('blur', function() {
console.log('THis is blur');
});
}, 500);
有没有更好的解决方案,而不是使用带有延迟的超时来解决这个问题,而不需要手动将函数添加到所有字段。
仅供参考:我使用ng-switch 和一些ng-if 语句来显示特定的输入字段。也许这就是问题所在。但我不知道。
【问题讨论】:
-
您使用的是哪个版本的 Angular? AngularJS 1.x 的标签是
angularjs,而 Angular 2+ 的标签是angular。 -
错误,仅更改为正确的。角度js。
-
什么是
this.$element[0],您是动态创建表单还是表单域? -
$element[0] 返回类似
的元素 -
@您是否需要提供一个工作代码 sn-p 以至少检查代码和帮助。您的问题太模糊,无法回答
标签: javascript angularjs forms