Rumah > Soal Jawab > teks badan
Kod arahan adalah seperti berikut:
var regex = /[\u4e00-\u9fa5\u3400-\u4db5\ue000-\uf8ff]/;
app.directive("ifHanzi", function () {
return {
restrict: "A",
scope:true,
require: "ngModel",
link: function (scope, ele, attrs, ngModelController) {
ngModelController.$parsers.unshift(function (input) {
if (regex.test(input)) {
ngModelController.$setValidity('ifHanzi', true);
} else {
ngModelController.$setValidity('ifHanzi', false);
}
});
}
}
});
Kod html adalah seperti berikut:
<form name="iForm" ng-submit="Search(Input)">
<p class="input-group">
<input type="text" class="form-control" ng-model="Input" name="inputText" if-hanzi>
<button class="btn btn-primary" type="submit>查询</button>
</p>
<span ng-show="iForm.inputText.$error.ifHanzi">提示:只能输入汉字进行查询!</span>
</form>
Kod pengawal:
app.controller('testCtrl',['$scope',function($scope){
$scope.Search=function(Input){
console.log(Input);//使用了表单验证指令后,Input就成了undefined
}
}]);
Pengesahan boleh dilaksanakan seperti biasa, iaitu, selagi saya menambah arahan "ifHanzi" yang ditulis oleh saya sendiri, kandungan borang yang dihantar tidak boleh diperolehi dalam pengawal dan menjadi tidak ditentukan Adakah arahan saya ditulis salah atau tidak ada yang lain? Jika saya tidak perasan apa-apa, saya harap pelajar boleh memberi saya beberapa petunjuk.
过去多啦不再A梦2017-05-15 16:59:43
Hanya keluarkan skop = benar dalam arahan Anda menggunakan skop bebas Asrama terputus, jadi anda perlu menggunakan telefon bimbit anda...
Dikemas kini: 2015-12-13
1. Pertama sekali, kerana apa yang anda require
adalah arahan, iaitu, ngModel
, dan arahan ini tidak mempunyai skop pengasingan, jika anda menetapkan scope = true
, ia akan menyebabkan dalaman ngModel
tidak dapat mengemas kini luaran < Nilai sepadan 🎜>. ngModel
Ini adalah perkara utama yang membawa kepada masalah di atas. Jadi hanya alih keluar pilihan konfigurasi ini. 2. Kaedah fungsi yang anda hantar ke
tidak mengembalikan hasil selepas mengesahkan ngModel.$parsers
, yang mengakibatkan nilai pada paparan tidak dihantar kepada model. Ia boleh diubah seperti berikut: ifHanzi
if (regex.test(input)) {
ngModelController.$setValidity('ifHanzi', true);
return input; /* return the input */
} else {
ngModelController.$setValidity('ifHanzi', false);
}
Ini adalah punca kedua masalah.
Semoga ini membantu.