簡體   English   中英

AngularJS中的oninput事件屬性

[英]oninput event attribute in AngularJS

我正在構建一系列輸入字段,這些字段會在達到最大長度時自動顯示。 這通過檢查ng-keyup事件上的值的長度來工作,但這有一個小問題,可以通過使用oninput事件來解決。 但是,Angular似乎沒有出現這種情況?

我正在努力解決的問題:

當我快速輸入最大字符數(在我的情況下是兩位數,可以很快輸入)時,第一個keyup在輸入兩個字符后觸發,並標記到下一個字段。 第二個keyup僅在tabbing之后注冊,因此它會在下一個字段上觸發。 這會導致不必要的行為

要重現檢查這個小提琴 (jQuery,因為它允許我快速重現我正在尋找的問題和解決方案),填寫“月”和“年”字段,然后在“日”字段中快速輸入2位數。 當完成得足夠快時,焦點會一直跳到“年”(因為第二個keyup在“月”聚焦時被觸發)。

使用.on('input', ...)此問題就會消失。 但是,我想在jQuery中使用它,而在Angular中使用它作為屬性,如ng-keyup 這是可能的,如果不是,我怎么能以另一種方式解決這個問題?

看起來你在那個jsfiddle中使用jquery。 而是以角度來綁定oninput事件,您可以使用:

大多數情況下,這種DOM操作必須在指令內部。 只是為了演示,我將它添加到控制器:

angular.element(document.querySelectorAll("input")).on("input", function (event) {

    var $input = angular.element(event.target),
        maxlength = $input.attr('max').length;

    if (this.value.length >= maxlength) {
        this.nextElementSibling.tagName==="INPUT" ? this.nextElementSibling.focus() : this.blur();
    }

});

DEMO

暫無
暫無

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

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