如何在调用回调之前禁用按钮
How do I disable a button until callback is called?
我有一个带有按钮的联系人表单,如果该表单无效或未选择重述,我想禁用该按钮。
<form name="contactForm" data-ng-controller="ContactCtrl" novalidate>
...
<input class="form-control" name="email" type="email" required data-ng-model="contactEmail">
...
<div class="g-recaptcha" data-callback="recaptchaCalled" data-expired-callback="recaptchaExpired" data-sitekey="PULBIC KEY"></div>
...
<input type="checkbox" data-ng-model="recaptchaValid" />
...
<button type="submit" ng-disabled="!recaptchaValid || !contactForm.$valid">Send</button>
这是表单的控制器,现在调用此回调是因为发生了警报。
app.controller('ContactCtrl', function($scope) {
$scope.recaptchaValid = false;
recaptchaCalled = function() {
$scope.recaptchaValid = true;
alert('pressed!');
};
});
如果我输入了一个有效的电子邮件地址,该按钮将保持禁用状态(并取消选中复选框),然后我可以单击该复选框,该按钮会再次启用、取消选中和禁用。-正确的行为。
如果我输入了一个有效的电子邮件地址,然后进行captcha,该按钮将保持禁用状态(并取消选中复选框)。
如果我做了captcha,然后输入了一封有效的电子邮件,按钮就会启用(复选框也会被选中)。
如果我输入了一个有效的电子邮件地址,然后进行验证,然后返回并触摸表单并强制其重新验证,按钮(和复选框)就会正确地执行它们的操作。
这似乎表明需要调用刷新。我不能把这个放在jsfiddle上,因为我不能进行棱角分明的工作。
我确实发现了这个:https://github.com/VividCortex/angular-recaptcha以及如何将其集成:http://code.ciphertrick.com/2015/05/19/google-recaptcha-with-angularjs/但它太过头了,我无法计算出我需要的部分。
收到回调并在控制器中设置变量后,必须调用$apply()函数。因为回调来自Angular外部,Angular不知道它需要更新,所以你必须告诉它这样做。现在你可以在按钮上使用ngDisabled,并将其链接到控制器中的变量,你就完成了。
相关文章:
- 如何在javascript中添加带有回调函数的按钮点击事件作为window.conf
- 如何在调用回调之前禁用按钮
- Bootbox:取消对话框后的回调功能/点击'X'按钮
- Angular Js 尝试从主按钮回调动态更改模态文本并且不起作用
- 未通过单击按钮调用JavaScript回调
- 返回按钮回调函数在特定情况下失败或未启动
- 类似FaceBook的按钮回调不起作用
- Facebook页面的Facebook“喜欢”按钮,但带有回调
- 脸书登录按钮回调函数
- 单击按钮后显示回调
- G+ 登录按钮回调绑定两次
- IE issue-使用复选框/单选按钮时,jQuery.change()不会触发回调
- 自定义Google加号按钮回调
- 每次加载页面时都运行按钮回调函数
- 谷歌加自定义共享按钮回调
- 如何检索用户的详细信息喜欢按钮回调函数在facebook
- Facebook喜欢按钮回调javascript警告框
- 尝试配置YouTube订阅按钮回调
- Reddit按钮回调函数
- Safari搜索字段取消按钮回调