代码之家  ›  专栏  ›  技术社区  ›  Elaine Byene

函数replace(/\s+/g,'').trim()和trim()不适合用于输入值

  •  0
  • Elaine Byene  · 技术社区  · 2 周前

    我试着使用 replace(/\s+/g,' ').trim() 以及 .trim() 但它不起作用。

    我想删除键入的所有空格 input1 从…起 input2 input3 。请帮忙。

    var input1 = document.getElementById('myInput1');
    var input2 = document.getElementById('myInput2');
    var input3 = document.getElementById('myInput3');
    
      input1.addEventListener('change', function() {
        input2.value = input1.value + "@gmail.com".replace(/\s+/g,' ').trim();
        input3.value = input1.value + "@gmail.com".trim();
      });
    <input type="text" id="myInput1" />
    <input type="text" id="myInput2" />
    <input type="text" id="myInput3" />
    2 回复  |  直到 2 周前
        1
  •  3
  •   Barmar    2 周前

    您正在从中删除空间 @gmail.com ,而不是用户的输入。应该是 input1.value.replace(...) .

    var input1 = document.getElementById('myInput1');
    var input2 = document.getElementById('myInput2');
    var input3 = document.getElementById('myInput3');
    
      input1.addEventListener('change', function() {
        input2.value = input1.value.replace(/\s+/g,' ').trim() + "@gmail.com";
        input3.value = input1.value.trim() + "@gmail.com";
      });
    <input type="text" id="myInput1" />
    <input type="text" id="myInput2" />
    <input type="text" id="myInput3" />
        2
  •  1
  •   theaminul    2 周前

    代码的问题在于您正在应用 replace trim 方法到字符串 @gmail.com ,而不是的值 input1 。您应该将这些方法应用于 input1.value 相反以下是更正后的代码:

    var input1 = document.getElementById('myInput1');
    var input2 = document.getElementById('myInput2');
    var input3 = document.getElementById('myInput3');
    
    input1.addEventListener('change', function() {
      input2.value = input1.value.replace(/\s+/g,'').trim() + "@gmail.com";
      input3.value = input1.value.replace(/\s+/g,'').trim() + "@gmail.com";
    });
    

    在该代码中, replace(/\s+/g,'').trim() 应用于 input1.value ,从输入中删除所有空格,并修剪任何前导空格或尾随空格。然后 @gmail.com 被附加到结果中。