الزاوي تتطلب التوجيه يكسر بلدي واحد
-
21-12-2019 - |
سؤال
لدي مخصص التوجيه ، المرشحات على ng-نموذج المدخلات, أن يقيد المدخلات فقط إلى الأرقام:
.directive('onlydigitinput', function () {
return {
require: 'ngModel',
link: function (scope, element, attrs, modelCtrl) {
modelCtrl.$parsers.push(function (inputValue) {
var transformedInput = inputValue.toLowerCase().replace(/ /g, '')
.replace(/[^0-9]+/g, '');
if (transformedInput != inputValue) {
modelCtrl.$setViewValue(transformedInput);
modelCtrl.$render();
}
return transformedInput;
});
}
};
})
يعمل كبيرة وحدها ، ولكن تستخدم جنبا إلى جنب مع ، على ما يبدو ، معيار التوجيه المطلوبة ، يبدأ الفشل.
يمكنني استخدام HTML التالية (اليشم الجملة):
input(type='text' , required, onlydigitinput, min='1', max='99', maxlength='2')
(أنا لا تستخدم type='عدد' كما أنه عبث مع maxlength: maxlength تجاهل نوع الإدخال="عدد" في كروم, كما يتجاهل بلدي التوجيه)
عندما كنت أدخل أرقام, أنه يعمل بشكل جيد.الحقل صالح.عندما أحاول أن أدخل الرقم ثم بعض الرسالة, أنه يعمل بشكل جيد:الحقل صالح ، وأنا لا يمكن أن يدخل غير أرقام.ولكن عندما أبدأ من غير رقم حقل غير صالح ولكن لا يزال يمكنني أن أدخل الحروف التي يرافقه الخطأ التالية:
TypeError: Cannot read property 'toLowerCase' of undefined
at http://localhost:3000/scripts/core/directives/systemDirectives.js:63:54
في اشارة الى استخدام toLowerCase في التوجيه أعلاه.يرجى تقديم المشورة كيف يمكن مسح هذا الخطأ و جعل بلدي التوجيه أداء جيدا أيضا في الحالة الأخيرة ، وتجنب الخطأ.
المحلول
لديك حقل مطلوب المصادقة على حقل الإدخال.ومن ثم عند تعيين الحقل إلى قيمة فارغة("") - يحدث عند كتابة غير أرقام.تصبح قيمة غير معرف.
var transformedInput = inputValue.toLowerCase().replace(/ /g, '')
.replace(/[^0-9]+/g, '');
if (transformedInput != inputValue) {
modelCtrl.$setViewValue(transformedInput);
modelCtrl.$render();
}
إضافة أدناه على رأس البرمجية أعلاه:
if(!inputValue) return ;