【发布时间】:2014-12-26 23:55:35
【问题描述】:
我正在构建一个韩语词汇训练器,我想比较用户输入作为人们输入的内容。
在韩语和其他一些亚洲语言中,您可以使用多个键位事件来编写字母。在 Chrome 中,$scope.$watch、ng-keyup 和 ng-change 仅在字母完全组成并且输入新字母或空格后才会触发。我不介意 AngularJS 在最后一个字母完全组成之前不会触发任何东西,但是一旦字母完成,它应该触发而无需添加空格或开始下一个单词。
HTML:
<form name="forms.vocabularyForm">
<input name="answer" id="answer" ng-model="vocabularyCtrl.answer" ng-change="vocabularyCtrl.checkChange()" ng-keyup="vocabularyCtrl.checkKeyUp($event)" type="text" />
</form>
控制器:
.controller('VocabularyCtrl', [
'$scope',
'$location',
function($scope, $location) {
this.checkChange = function () {
console.log("answer change: " + this.answer);
};
this.checkKeyUp = function ($event) {
console.log("answer keyUp: " + this.answer);
};
$scope.$watch('vocabularyCtrl.answer', function (answerNew, answerOld) {
console.log('answerOld: ' + answerOld + ', answerNew: ' + answerNew);
}, true);
};
]);
例子:
Input: ㄱ
Console:
answerOld: , answerNew:
answer keyUp:
Input: 가
Console:
answerOld: , answerNew:
answer keyUp:
Input: 감 (character is now fully composed)
Console:
answerOld: , answerNew:
answer keyUp:
Input: 감ㅅ (starting the next character, same behaviour with space bar)
Console:
answerOld: 감, answerNew:
answer change: 감
answer keyUp: 감
【问题讨论】:
-
是否可以在 key up 上运行?
-
Keyup 触发,但在字母形成之前返回一个空字符串
-
使用
ng-keyup会使chrome捕捉所有变化,但firefox和IE拒绝播放。
标签: javascript angularjs