如果未使用 jQuery hide() 显示 AngularJS 表单项,是不是对其进行验证?

Posted

技术标签:

【中文标题】如果未使用 jQuery hide() 显示 AngularJS 表单项,是不是对其进行验证?【英文标题】:Is an AngularJS Form Item validated if it isn't displayed using jQuery hide()?如果未使用 jQuery hide() 显示 AngularJS 表单项,是否对其进行验证? 【发布时间】:2020-10-08 18:46:31 【问题描述】:

是的,现在是 2020 年,我仍在使用 AngularJS 1.x 而不是 Angular,但它是用于工作中的项目,所以我在这件事上别无选择。

无论如何,我正在尝试设置一个表单,该表单需要在两个字段之一时正确验证(但不是两个字段或一个字段,因为根据单选按钮集的状态,一次甚至只有一个可见)已填写。本质上,我需要异或验证,我真的希望我不需要为它创建自定义 html 标记或属性。

我想到的最简单的解决方案实际上可能与表单的工作方式相一致,因为根据单选按钮的值,显示两个表单条目之一(使用 jQuery 的 hide() 和 show () 方法,而不是 ng-hide、ng-show 或 ng-if)。我的问题是,jQuery 的 hide() 方法是否像 CSS 的 display: none 属性一样从页面中完全删除了 div?如果是这样,验证是否会检查未显示的 div?否则,我将如何根据显示的内容来验证一个或另一个而不是两者?

很遗憾,我不能包含任何代码或 plunker,因为我的工作要求我遵守 NDA,抱歉,但希望我已经提供了足够的信息。

谢谢。

【问题讨论】:

我建议你不要使用 jQuery,因为你需要使用 $scope.$apply 来更新你的控制器范围。而是使用 ng-if 从 DOM 中删除元素。我还建议您构建一个小型演示来展示您的案例。 【参考方案1】:
<div ng-if="myVar">
  Displays if myVar truthy
</div>

这应该可以解决您的问题。

【讨论】:

以上是关于如果未使用 jQuery hide() 显示 AngularJS 表单项,是不是对其进行验证?的主要内容,如果未能解决你的问题,请参考以下文章

动画基础隐藏和显示 (jQuery)

jQuery-4.动画篇---动画基础隐藏和显示

使用 .hide() jquery 后 Div 重新出现

jquery hide,show方法问题

jQuery 效果 - 隐藏和显示

jquery总结06-动画事件01-基础显示和隐藏