J'écris une directive appelée ValidateChineseDirective.à propos des directives angularJS
define(function(){
'use strict';
return function(module){
module.directive('validateChinese',function(){
return {
restrict:'A',
require:'ngModel',
link:function(scope,ele,attr,ngModel){
if (!ngModel) return;
var maxlength = -1;
attr.$observe('validateChinese', function(value) {
var intVal = parseInt(value,10);
maxlength = isNaN(intVal) ? -1 : intVal;
ngModel.$validate();
});
ngModel.$parsers.push(function(viewValue){
var valueArray = viewValue.split("");
var reg = /[\u4E00-\u9FA5\uF900-\uFA2D]/;
var len=0;
for(var i=0;i<valueArray.length;i++){
len += reg.test(valueArray[i])?4:1;
}
if(len<=maxlength){
ngModel.$setValidity('validateChinese',true);
}else{
ngModel.$setValidity('validateChinese',false);
}
return viewValue;
});
}
}
})
}
})
html:
<input type="text" name="approvedDocNo" validate_chinese="4" ng-model="fundMaintenanceVM.editData.approvedDocNo" class="form-control">
le reg a été utilisé pour faire correspondre chinois. J'ai trouvé que si l'espace d'entrée au début de la boîte d'entrée ou à la fin de celui-ci. ngModel. $ Parsers.push ne s'est pas déclenché avant d'avoir tapé un caractère. En outre, lorsque ngModel. $ Parsers.push est déclenché, viewValue ne contient pas l'espace qui se trouve à la fin de cette zone de saisie ou à la fin de celui-ci. Quelqu'un peut-il m'aider, thx.
u peut créer un violon simple? –
Je suis désolé, je ne sais pas comment créer ce simple violon correctement. –
Est-ce que le code ci-dessous vous convenait? –