我有一个使用角度验证如下验证的登录表单“文本”的作用:谷歌浏览器的问题:模型的输入型“密码”没有更新,但是当浏览器自动填充保存的值
输入框的HTML:
<input id="loginName" name="loginName" type="text" class="form-control" placeholder="Username" data-ng-model="loginName" data-ng-maxlength="246" required>
<input id="password" name="password" type="password" class="form-control" placeholder="Password" data-ng-model="password" data-ng-maxlength="246" required>
使用角度验证对登录名和密码字段验证“登录”按钮。
在页面刷新时保存这些字段(您想要保存用户名和密码功能)时,Google Chrome(其他浏览器的行为与预期相同),输入类型为'text' - > $ scope的模型。另一方面,输入类型'password' - > $ scope.password的模型始终是空的,并且根据验证逻辑,表单被声明为无效,并且'登录'按钮保持禁用状态输入字段将填入保存的信息(请参阅第一张附加图像)。
即使发生按键或鼠标点击(不一定在输入字段,但网页上的任何地方),瞬间密码的模型会被更新,表单将被验证,如附图所示。
我尝试使用自动对焦,自定义自动对焦指令,超时,但它似乎没有按预期工作。
任何建议,可能将光标移动到文本字段的末尾,以便窗体知道文本已被浏览器输入到密码字段中?
碰到这样的:AngularJS browser autofill workaround by using a directive
注:所有他上述溶液说说输入元素值,要么.VAL()或.value的方法,但棘手的问题是无论是在密码的情况下返回undefined得到答案输入字段。
但是没有运气!
谢谢。
你可以显示你有问题的输入框的HTML以及按钮的HTML吗? – Claies
因此,除了禁用的按钮,一切都按预期工作?我没有使用angulars验证服务,但你可以简单地设置一个超时函数:$ timeout(function(){if($ scope.password){login_form。$ invalid = false; form.state.accountLocked = false; form。 state.accountNotVerified = false}}) – Kyle
是的,试过了,它告诉了究竟是怎么回事(游标在第0个位置):密码输入字段有一个空字符串,尽管浏览器会在密码输入中加载值框。所以不知何故,尽管密码字段根据$ scope.password变量填充了文本,但仍为空。 – npn