基于评估值一般禁用多个按钮
generically disable multiple buttons based on evaluating value
我有一些按钮,用户可以点击它们来回答问题。有些按钮是正确答案,有些是不正确的。如果按钮是一个错误的答案,按钮仍然有效,但计数器增加计数错误的答案。如果按钮是正确答案,那么我想增加正确答案计数,更改按钮样式,并禁用按钮。代码片段(html):
<div class="container" ng-controller="myCtrl">
<div>
Right answers: {{ right_answers }}
</div>
<div>
Wrong answers: {{ wrong_answers }}
</div>
<button ng-style="answerswer1Style" ng-click="clickThis('answer1')" ng-disabled='answer1'> Answer1 </button>
<button ng-style="answerswer2Style" ng-click="clickThis('answer2')" ng-disabled='answer2'> Answer2 </button>
<button ng-style="answerswer3Style" ng-click="clickThis('answer3')" ng-disabled='answer3'> Answer3 </button>
<button ng-click="clickThis('wrong1')" ng-disabled='wrong1'> Wrong1 </button>
<button ng-click="clickThis('wrong2')" ng-disabled='wrong2'> Wrong2 </button>
<button ng-click="clickThis('whatever')" ng-disabled='whatever'> Whatever </button>
</div>
代码片段(controller):
var myCtrl = function($scope) {
$scope.right_answers = 0;
$scope.wrong_answers = 0;
$scope.answers = ['answer1','answer2','answer3'];
$scope.clickThis = function(answer) {
if ($scope.answers.indexOf(answer) != -1) {
$scope.right_answers += 1;
switch(answer){
case 'answer1':
$scope.answer1 = true;
$scope.answer1Style = {'background-color':'green', 'color':'white'};
break;
case 'answer2':
$scope.answer2 = true;
$scope.answer2Style = {'background-color':'green', 'color':'white'};
break;
case 'answer3':
$scope.answer3 = true;
$scope.answer3Style = {'background-color':'green', 'color':'white'};
break;
};
}
else {
$scope.wrong_answers += 1;
};
};
};
我的问题是,有没有一种方法可以使这个更通用,在那里我不必使用CASE,并为每个单独的答案包括$作用域,以便禁用它(或为此更改样式),即ng-disabled="answerswer1"
, ng-disabled="answerswer2"
, $scope.answer1
, $scope.answer2
?
谢谢!
可以将$event
对象作为ngClick
指令的参数。
<button ng-click="clickThis($event, 'answer')"> Answer </button>
然后你就可以在$scope.clickThis
函数
$scope.clickThis = function(event, answer) {
if ($scope.answers.indexOf(answer) != -1) {
$scope.rightAnswers += 1;
element = angular.element(event.target);
element.css({'color': 'white', 'background-color': 'green'});
element.prop('disabled', true)
} else {
$scope.wrongAnswers += 1;
};
}
例子:plnkr.co
相关文章:
- 将 CSS 应用于禁用的输入按钮
- 如果使用jQuery验证器插件找到单选按钮,则将不同的addMethod应用于字段
- 在循环中添加addEventListener()只适用于最后一个按钮
- HTML按钮的作用类似于从键盘按下的键,并在某些对象或整个网站上起作用
- 关闭按钮(右上 X)以执行类似于控件的操作
- Phonegap 3.2.0 android应用程序后退按钮剪切仅适用于某些页面
- 使用css类将自定义样式应用于上下文按钮的Highcharts
- onclick适用于一个按钮,但不适用于'不要为别人工作
- AJAX后退按钮解决方案类似于facebook
- 将单个服务逻辑应用于两个类似的按钮
- 如何将相同的功能应用于两个按钮
- 将新按钮应用于游戏
- Regex验证应用于我的asp网页上的所有按钮
- jquery:$(input).keydown无法在单选按钮上设置处理程序,同样的代码也适用于文本
- 在jquery中使用each,并为对应于段落的按钮单击事件
- 使j查询ajax调用既适用于页面加载,也适用于单击按钮
- CSS for JS 按钮适用于本地计算机,但不适用于服务器
- 使用 JavaScript 将 CSS 应用于动态生成的单选按钮
- 评估 JavaScript 中的单选按钮
- 将 javascript 应用于所有按钮