合并数字Textarea自动

时间:2019-04-20 13:03:16

标签: javascript php html

123456 12-12 3456

如何自动将文本转换为Textarea字段?

123456 | 12 | 12 | 3456

自动更正。 如何在Textarea中做到这一点?

2 个答案:

答案 0 :(得分:0)

使用replace

 

const str = "123456 12-12 3456";
const replaced = str.replace(/\-|\s/g, " | ");
console.log(replaced);
 

答案 1 :(得分:0)

您可以在文本区域上附加一个keyup事件侦听器,并通过基于1个或多个非数字字符进行拆分并将其与所需的竖线(|)符号连接起来来修改其内容。

document.getElementById('some_id').addEventListener('keyup',function(){
   var content = this.value.split(/[^\d]+/);
   this.value = content.join(" | ");
});
<textarea rows='10' cols='50' id='some_id'>
</textarea>

好,正如评论中所讨论的,对于信用卡格式设置,您可以执行以下操作:

document.getElementById('some_id').addEventListener('keyup',function(){
       
       var content = this.value;
       var new_content = '';
       var temp_content = '';
       var current_length = 0;
       for(var i=0;i<content.length;++i){
           if('0123456789'.indexOf(content.charAt(i)) != -1){
               temp_content += content.charAt(i);
               current_length++;
           }
           
           if(current_length === 25){
              new_content += insertPipeForCreditCardFormat(temp_content) + '\n';
              temp_content = '';
              current_length = 0;
           }
       }
       this.value = new_content + temp_content;
});

function insertPipeForCreditCardFormat(credit_card){
   var pipe_indices = new Set([16,18,22]);
   var card_format = '';
    for(var i=0;i<credit_card.length;++i){
      if(pipe_indices.has(i)){
        card_format += '|';
      }
      card_format += credit_card.charAt(i);      
    }
    return card_format;
}
<textarea id='some_id' rows='10' cols='50'></textarea>

相关问题