2016-12-06 18 views
0

我試圖在輸入文本字段中添加BR標誌,如果有超過5個字母。(同時寫)加入JavaScript後的字母特定數量的信在一個循環中

我的代碼生成後5 BR跡象字母,但它創建了超過1個br標誌。

代碼:

(function(i){ 
    $('#input' + i).on('keyup', function() { 
     if($('#input' + i).val().length > 5) { 
      $('#input' + i).val($('#input' + i).val() + '<br>'); 
     } 
    }); 
}(i)) 
+0

當用戶鍵入不要更改輸入的內容。它彌補插入點的位置,並造成可怕的用戶體驗。格式**之後**,或提供一個分開的控制,而不是一個單一的輸入(做得不好也會導致糟糕的用戶體驗)。 –

+0

另請注意,'keyup'只會在每次按鍵動作時觸發一次,*不會*每個字母添加到輸入時會觸發一次。按住一個鍵就是上述的一種方式。 –

+0

@ T.J.Crowder有沒有辦法來總結所有的行爲? – utdev

回答

1

我強烈建議這樣做(似乎對這個問題的意見)。

但是,如果您確實想使用input而不是keyup,請刪除您之前添加的以前的<br>標記,然後拆分整個字符串,而不是僅在末尾添加。看評論:

(function(i) { 
 
    $('#input' + i).on('input', function() { 
 
    // No need to look it up repeatedly, remember the jQuery wrapper for this input 
 
    var $this = $(this); 
 
    // Get the value 
 
    var val = $this.val(); 
 
    if (val.length > 5) { 
 
     // Remove old <br>s 
 
     val = val.replace(/<br>/g, ""); 
 
     // Add new ones 
 
     var result = ""; 
 
     while (val) { 
 
     result += val.substring(0, 5); 
 
     val = val.substring(5); 
 
     if (val) { 
 
      result += "<br>"; 
 
     } 
 
     } 
 
     // Set the value 
 
     $this.val(result); 
 
    } 
 
    }); 
 
}(0))
<input type="text" id="input0"> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+0

你會推薦使用輸入而不是密碼? – utdev

+0

@utdev:是的,這就是我推薦使用'input'而不是'keyup'的原因。查看關於爲什麼的問題的評論。 –

+0

再次感謝我發現一個小錯誤/錯誤,如果我複製一個文本並將其粘貼到輸入文本中,它不能正常工作 – utdev

相關問題