簡體   English   中英

如何為帶有尾部/前導空格的輸入啟用angularjs 1.0.x驗證指令?

[英]How to enable angularjs 1.0.x validation directive for inputs with trailing/leading spaces?

我有一個指令,可使用regexp驗證文本輸入。 我想禁止用戶輸入空格字符。 該指令對文本內的空格非常有效,但是當用戶輸入尾隨空格或前導空格時,不會觸發驗證。 我知道angular自動修剪文本輸入,但是我不能使用ng-trim =“ false”指令,因為我的angularjs版本是1.0.6。 有沒有辦法解決這個問題?

我已經嘗試過如何禁用AngularJS中的輸入修剪功能的建議 適用於angular 1.0.x,並且部分起作用-驗證會在用戶使用“ ctrl + v”或鼠標粘貼包含尾隨空格的值時調用,但鍵盤輸入仍不會觸發驗證。

自定義ngTrim指令,部分有效:

app.directive('ngTrim', function() {
    return {
        require: 'ngModel',
        priority: 300,
        link: function(scope, iElem, iAttrs, ngModel) {
            if (iAttrs.ngTrim === 'false') {
                ngModel.$parsers.unshift(function() {
                    return iElem.val();
                });
            }
        }
    }
});

如果您唯一想做的就是禁止輸入空格,則可以將輸入偵聽器直接附加到元素,並在輸入空格時將其刪除,如下所示:

iElem.bind('input', (eventData) => {
  if (eventData.data == ' ') {
    iElem.val(iElem.val().replace(/\s/g, ''));
  }
});

http://jsfiddle.net/2n6m8gtz/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM