我在网上到处查找,包括几个堆栈溢出示例,以找到该问题的解决方案。 具体来说,我尝试了这个:
var disableButton = function() {
document.getElementById('<%= btnSubmit.ClientID %>').disabled = true;
}
$scope.isDisabled = false;
var someFunc = function() {
$scope.isDisabled = true;
}
<button OnClientClick="disableButton()" type="submit">Submit</button>
<button ng-disabled="isDisabled" type="submit">Submit</button>
两者都没有像广告上所说的那样工作。还有其他建议吗?请仅提供角度建议。 谢谢。
你非常接近答案。您唯一错过的是使用 ng-click
调用按钮上的 someFunc()
函数。
另一个问题是,在控制器中,该功能应该是$scope.someFunc()
的,而不是var someFunc()
工作示例:您的索引.html应如下所示:
<html>
<head>
<script data-require="angular.js@1.3.15" data-semver="1.3.15" src="https://code.angularjs.org/1.3.15/angular.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
<script src="application.js"></script>
</head>
<body ng-app="demo" ng-controller="demoController">
<button type="submit" ng-disabled="isDisabled" ng-click="disableButton()"> Click me to disable myself</button>
</body>
</html>
而您的控制器应用程序.js如下所示:
angular.module('demo', [])
.controller('demoController',function($scope){
$scope.isDisabled = false;
$scope.disableButton = function() {
$scope.isDisabled = true;
}
});
另一种方法是编写一个禁用提交按钮的指令
angular.module('myApp').directive('clickedDisable', function(){
return {
restrict: 'A',
link: function(scope, ele, attrs){
$(ele).click(function(){
$(ele).attr('disabled', true);
});
}
};
并在 HTML 中
<button type="submit" clicked-disable></button>
我不喜欢提供的任何答案,因为它们都用 isDisabled
变量混淆了全局范围,为什么不这样做呢?
<button type="submit" ng-click="disableButton($event)">Submit</button>
.
$scope.disableButton = function($event) {
$event.currentTarget.disabled = true;
};
如果您需要在禁用之前提交表单。
此代码未经过测试
<form ng-submit="disableFormSubmitButton($event)">
<button type="submit">Submit</button>
</form>
.
$scope.disableFormSubmitButton = function($event) {
$($event).find('[type=submit]').prop('disabled',true);
};
尝试使用这个:
<input type="text" ng-model="email" ng-disabled="button" required ng-init="button=true">
<a class="btn" ng-click="button=false">enable edit</a>
<a class="btn" ng-click="button=true">disable edit</a>
<a class="btn" ng-click="button=!button">toggle edit</a>
此外,还有不同的方法可以实现此功能,您可以通过以下链接,它们肯定会有所帮助。
禁用提交和服务器响应之间的所有表单控件
$http/$q 呼叫上的禁用按钮
如何对 NG 禁用执行检查
也找到工作示例。
.HTML
<body ng-app="DisableButtonApp">
<div ng-controller="MyAppCtrl">
<button ng-click="someFunc()" ng-disabled="isDisabled" ng-model="isDisabled"type="submit">Submit</button>
</div>
</body>
.JS:
angular.module('DisableButtonApp', [])
.controller('MyAppCtrl',['$scope', function($scope){
$scope.isDisabled = false;
$scope.someFunc = function(){
alert("Clicked!");
$scope.isDisabled = true;
return false;
};
}]);
演示
对于它的价值,您可以直接在模板中执行此操作:
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<body ng-app>
<button ng-disabled="isDisabled" ng-click="isDisabled=true" type="submit">Submit</button> isDisabled={{isDisabled}}
</body>
这是我为我的单一表单提交场景工作的答案:
$scope.increment = 0;
$scope.someFunc = function() {
$scope.increment++
if($scope.increment > 1) {
return;
} else {
//do something else
}
}
无需指令或 HTMl。
由于历史原因,如果类型不是"提交",则提交表单中的单个(或)。
根据MDN,按钮可以具有类型属性。
<button type="button">Your button</button>
使按钮没有默认行为。
这是更详细的答案。
添加<input type="checkbox" ng-model="isDisabled">
并在 ng-disabled 属性ng-disabled="isDisabled"
中添加 isDisabled,因此当您选中复选框按钮并取消选中复选框时,启用按钮。
请参阅链接 http://plnkr.co/edit/e3w54TZEmfj8h5O6BX7B?p=preview
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<body ng-app>
<button type="submit" name="submit" class="btn btn-success" ng-disabled="isDisabled" ng-click="isDisabled=true">Hochladen</button> isDisabled={{isDisabled}}
</body>