2017-07-05 11 views
0

thisからの参照を使用しましたが、複数の入力テキストフィールドの質問に正確に挑戦したいと思います。私はさらにタイプしないようにユーザーを制限し、getElementByIdの代わりにgetElementsByClassNameを使用したいと思います。数値入力フィールドの集まりの文字数の制限

HTML

<td> 
<input id="quantity_scroll" cart_id="<?php echo $cart_row['id']; ?>" min="1" type ="number" max="99" value="<?php echo $cart_row['quantity'] ;?>" oninput = "checkLength()" class="form-control form-quantity" style=" width: 60px;text-align: left;" > 
</td> 

Javascriptを

function checkLength(){ 

var elements = document.getElementsByClassName("form-quantity"); 
var y; 
var ele = elements.length/2; 

for(y=0; y < ele; y++){ 
    var length = elements[y].value.length; 

     if(length <= 2){ 

     return true; 
    }else{ 
      var value = elements[y].value; 
      value = value.substring(0, value.length-1);  
      document.getElementsByClassName("form-quantity")[y].value = value; 
     } 
    } 
} 

enter image description here

ユーザーは最初の入力ボックスではなく、他に制限されているが。私は別の方法を試みたが、なぜそれが起こっていないのか理解できない。

+0

あなたが入力に 'maxlength'属性を追加することができますか? – evolutionxbox

+0

"最初の入力ボックスでのみユーザーが制限されています" - これを理解できればわかりませんが、すべてに制限したいという意味ですか?または最初のフィールドだけ?なぜなら、私は、あなたがフォーカスのあるフィールドを特にチェックするために 'this'を渡す必要があるからです。 – Qiqo

+0

問題はあなたのループで...' var ele = elements.length/2; 'と' for(y = 0; y

答えて

1

以下のコードを確認してください。ユーザーが3桁以上の数字を入力しないように制限します。あなたは、すべての入力フィールドが同じクラスform-fieldを持っていることを確認する必要があります

$(".form-field").on('input', function() { 
 
    var enteredVal = $(this).val(); 
 
    if (enteredVal.length > 3) { 
 
    $(this).val(enteredVal.substring(0, enteredVal.length - 1)); 
 
    console.log('More than 3 characters not allowed.'); 
 
    return; 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type='text' class='form-field' />

+0

ありがとう、完璧に働いています。私は自分のコードで何が間違っているのか知りたいですが。 –

+0

JQueryを使うだけで簡単に入手できます。伝統的なJavaScriptでは、あなたが見ることができるように、たくさんのコードと条件を書く必要がありました。また、これは 'on'を使用しているように動的要素で動作します。 –

+0

ヘルプありがとうございました –

関連する問題