2016-04-18 62 views
0

"checkNumbers()"有問題。試着檢查我的輸入是否不大於10個數字; "isAllowedSymbol()"工作很好,但另一個沒有。我的問題是什麼?輸入最大長度檢查

function isAllowedSymbol(input) 
     { 
      var value = input.value; 
      var rep = /[a-zA-Z]/; 
      var rep2 = /[а-яА-Я]/; 

     if (rep.test(value)) 
     { 
     value = value.replace(rep, ''); 
     input.value = value; 
       if (rep2.test(value)) 
       { 
       value = value.replace(rep2, ''); 
       input.value = value; 
       } 
     } 
    } 
    var element = document.querySelector("input[name=answer]"); 


    function checkNumbers(element) { 
     if (element != null && element.value.length > 10) { 
     element = element.replace(element, ''); 
     } 
    } 

<input type="text" maxlength="10" name="answer" onkeyup="isAllowedSymbol(this);checkNumbers(this);" placeholder="Enter data" > <br> 
+0

的maxlength屬性第一次編輯你想要什麼?這是即將到來的,我需要這個... – nisar

+0

typo here(placeholder =「輸入數據」「) - 應該是(placeholder =」輸入數據「) – gavgrif

+1

您試圖使用替換函數(它是(元素)的HTML元素,你需要做的是使用replace方法:'element.value = element.value.replace(element.value,'');'If該字段的文本長度超過10個字段將被清除 – enhzflep

回答

0

您已經使用maxlength = 10輸入,因此您將無法對任何新的字符添加到它,因此條件element.value.length > 10永遠不會發生。

使用此:

function isAllowedSymbol(input) 
 
     { 
 
      var value = input.value; 
 
      var rep = /[a-zA-Z]/; 
 
      var rep2 = /[а-яА-Я]/; 
 

 
     if (rep.test(value)) 
 
     { 
 
     value = value.replace(rep, ''); 
 
     input.value = value; 
 
       if (rep2.test(value)) 
 
       { 
 
       value = value.replace(rep2, ''); 
 
       input.value = value; 
 
       } 
 
     } 
 
    } 
 
    var element = document.querySelector("input[name=answer]"); 
 

 

 
    function checkNumbers(element) { 
 
     if (element != null && element.value.length > 10) { 
 
     element.value = '' 
 
     } 
 
    }
<input type="text" maxlength="15" name="answer" onkeyup="isAllowedSymbol(this);checkNumbers(this);" placeholder="Enter data" > <br>

+0

順便說一下,它的錯誤邏輯,如果我寫11長度值,然後它擦除所有..我想它應該刪除最後一個添加..它應該是'element.value = element .substring(0,10);' – Sachin

+0

@Sac,從OP問題想要清除完整值還是t他最後輸入了價值。我將其解釋爲完整的值並編寫了代碼。如果他只想清除最後一個字符,那麼你是對的 –

0

第一,你想做什麼? 如果你想要做的,當你輸入超過10,則輸入框會清楚,然後在輸入框中

<input type="text" maxlength="15" name="answer" onkeyup="isAllowedSymbol(this);checkNumbers(this); " placeholder="Enter data">