Angular指令中的多个“或”表达式

用户883807

我试图检查是否在2个输入字段上满足4个条件中的1个,以便在ng-disabled指令中使用AngularJS表达式启用“保存”按钮

仅在满足前两个条件的情况下,以下代码才会启用“保存”按钮。因此,如果用户在电子邮件输入字段中输入任何文本,从而使该文本成为$dirty$valid,则将启用“保存”按钮。但是,如果用户在用户名输入字段中输入任何文本,则“保存”按钮将保持禁用状态。

我如何才能看到最后两个条件?

<form name="userForm" ng-submit="submitForm(userForm.$valid)" novalidate>
  <label>Username</label>
  <input type="text" name="username" ng-model="user.name" required>
  <label>Email</label>
  <input type="text" name="email" ng-model="user.email" required>
  <button type="submit" ng-disabled="userForm.email.$pristine || userForm.email.$invalid || userForm.username.$pristine || userForm.username.$invalid">Save</button>
</form>

更新1

我最终增加了2个条件。现在,它几乎可以完美运行。

页面加载时,默认情况下将禁用“保存”按钮,因为两个字段均为$prisitine如果我在用户名或电子邮件字段中删除字符或向其中添加字符,则因为该字段为,所以将激活“保存”按钮$dirty这样行得通。

如果我首先编辑用户名,问题就会开始发生。如果我创建了一个新的有效用户名,然后开始编辑电子邮件字段,我将在编辑过程中遇到电子邮件无效的问题,例如 emailemail@或,email@email.并且在这些情况下,我们希望“保存”按钮被禁用,但它不会被禁用。用户名一旦确定就以某种方式$valid忽略了电子邮件为的事实$invalid

它不止于此。如果我加载页面并开始逐字符删除预加载的电子邮件地址char并点击所有$invalid位置,我将看到在每个$invalid位置成功禁用“保存”按钮这让我发疯。

form(name="userForm", ng-submit="submitForm(userForm.$valid)", novalidate)

    div.form-group
        label Username
        input.form-control(type="text", name="username", ng-model="user.name", ng-minlength="3", ng-maxlength="23", required)
        div.error(ng-show="userForm.username.$invalid && userForm.username.$dirty")
            p.help-block(ng-show="userForm.username.$error.minlength") Username is too short.
            p.help-block(ng-show="userForm.username.$error.maxlength") Username is too long.
            p.help-block(ng-show="userForm.username.$error.required") Username is required.

    div.form-group
        label Email
        input.form-control(type="email", name="email", ng-model="user.email", required)
        div.error(ng-show="userForm.email.$invalid && userForm.email.$dirty")
            p.help-block(ng-show="userForm.email.$error.required") Email is required.

    button(ng-model="button", ng-disabled="(userForm.username.$error.minlength || userForm.username.$error.maxlength || userForm.username.$error.required || userForm.username.$pristine || userForm.username.$invalid) && (userForm.email.$error.required || userForm.email.$pristine || userForm.email.$invalid)") Save

更新2

我找到了启用“保存”按钮的更好方法。

<button type="submit" ng-disabled="userForm.$pristine || userForm.$invalid">

现在工作完美。

米科·维塔拉(Mikko Viitala)

也许您可以仅通过检查formis$invalid和input是否为来切换提交按钮的状态$pristine

因此,您的输入将是

<input 
  type="text" 
  name="username" 
  placeholder="user name" 
  ng-model="user.name" 
  ng-minlength="3" 
  ng-maxlength="23"
  required></input>

<input 
  type="email" 
  name="email" 
  placeholder="email" 
  ng-model="user.email" 
  required></input>

<button
  type="submit" 
  ng-disabled="(userForm.username.$pristine || userForm.email.$pristine) || userForm.$invalid">Save</button>

<-- ng-disabled="(userForm.$pristine || userForm.$invalid" -->

在此处查看相关的Plunker http://plnkr.co/edit/7pkRAn “”

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Angular 正则表达式指令

来自分类Dev

如何在子指令中评估Angular表达式并在父指令中公开它?

来自分类Dev

如何在子指令中评估Angular表达式并在父指令中公开它?

来自分类Dev

计算角度指令中的表达式

来自分类Dev

Angular:如何通过指令中的表达式通过id获取元素?

来自分类Dev

Angular:如何通过指令中的表达式通过id获取元素?

来自分类Dev

评估传递给Angular指令的对象中为字符串的表达式

来自分类Dev

EF表达式中的多个“或”语句

来自分类Dev

SSIS中的多个表达式

来自分类Dev

lambda 表达式中的多个 like

来自分类Dev

指令中attr的角度保存监视表达式

来自分类Dev

评估自定义指令中的表达式

来自分类Dev

正则表达式中的多条指令

来自分类Dev

Angular js中的嵌套表达式

来自分类Dev

在Angular表达式中嵌套引号

来自分类Dev

正则表达式:多个捕获中的多个捕获

来自分类Dev

IE支持多个Angular ng-class表达式

来自分类Dev

AngularJS:指令监视属性表达式

来自分类Dev

监视指令外的表达式更改

来自分类Dev

如何在Lua中通过正则表达式重复匹配多个表达式

来自分类Dev

在 lambda 表达式中应用多个正则表达式模式

来自分类Dev

使用相同的表达式评估多个指令的合适方法是哪种?

来自分类Dev

计数表达式中的SSRS多个条件

来自分类Dev

grep正则表达式中的多个条件

来自分类Dev

如何合并图例中多个项目的表达式?

来自分类Dev

在AngularJS ng-class中链接多个表达式

来自分类Dev

单击AngularJS中的JS多个表达式

来自分类Dev

验证正则表达式中的多个条件

来自分类Dev

Scala正则表达式中的多个捕获组

Related 相关文章

热门标签

归档