2017-11-07 27 views
0

私のサイトのjavacriptの増減ボタンを操作するのに問題があります。私は私の入力フィールドのクラス名として私のJS変数を宣言するとき、私はボタンを押した場合、それは増加/このような入力フィールドの全てを低下させる:JSボタン、増分/減分が入力フィールドで正しく機能しない

enter image description here

しかし、私は私のIDを使用する場合入力フィールドでは、最初の行が増減しますが、他のすべてのボタンのボタンは機能しません。私はここで何が間違っているのか分かりません。 JSは明らかに動作していますが、どのように各行/ボタンごとに動作させることができますか?

私laravelブレードのHTML:

@foreach ($pgroup->pskus as $psku) 
<tr> 
<td> 
    <div> 
    <button id="subtract" class="remove-button md-btn" style="width: 33%; min-width: 0; float: left; height: 30px;"><i class="material-icons">remove</i></button> 
    <input type="text" class="md-input" id="{{ $psku->quantity_id }}" name="count" onClick="this.setSelectionRange(0, this.value.length);" style="width: 33%; min-width: 0; float: left; margin: 0; text-align: center; height: 30px;" value='0' /> 
    <button id="add" class="add-button md-btn md-btn-success" style="width: 33%; min-width: 0; float: left; height: 30px;"><i class="material-icons">add</i></button> 
    </div> 
    </td> 
    </tr> 
    @endforeach 

そして、私のJS:あなたが見ることができるように、私のJSコードは、現在1を作っている私の入力フィールドのクラスを使用している

@section('loadjs') 
<script src="{{ jfi\asset_cb('/js/pagination.js') }}"></script> 
<script src="{{ jfi\asset_cb('/bower_components/uikit/js/components/slider.js') }}"></script> 
<script src="{{ jfi\asset_cb('/js/factory.js') }}"></script> 
<script src="{{ jfi\asset_cb('/js/jquery.min.js') }}"></script> 
<script type="text/javascript"> 
$("#add").click(function(){ 
var value = $(".md-input").val(); 
value = +value + 1; 
$(".md-input").val(value); 
}); 

$("#subtract").click(function(){ 
var value = $(".md-input").val(); 
value = +value - 1; 
$(".md-input").val(value); 
}); 
</script> 
@endsection 

ボタンはすべての入力フィールドに影響します。

これを正しく動作させるにはどうすればよいですか?

UPDATE:新しいコード私がしようとしています:

HTML:

<div> 
<button class="subtract" class="remove-button md-btn" style="width: 33%; min-width: 0; float: left; height: 30px;"><i class="material-icons">remove</i></button> 
<input type="text" class="md-input" id="{{ $psku->quantity_id }}" name="count" onClick="this.setSelectionRange(0, this.value.length);" style="width: 33%; min-width: 0; float: left; margin: 0; text-align: center; height: 30px;" value='0' /> 
<button class="add" class="add-button md-btn md-btn-success" style="width: 33%; min-width: 0; float: left; height: 30px;"><i class="material-icons">add</i></button> 
</div> 

JS:すでに述べたようにコメントし

@section('loadjs') 
<script src="{{ jfi\asset_cb('/js/pagination.js') }}"></script> 
<script src="{{ jfi\asset_cb('/bower_components/uikit/js/components/slider.js') }}"></script> 
<script src="{{ jfi\asset_cb('/js/factory.js') }}"></script> 
<script src="{{ jfi\asset_cb('/js/jquery.min.js') }}"></script> 
<script type="text/javascript"> 
$(".add").click(function() { 
    var inputField = $(this).prev('input'), /* get the input field */ 
     value = parseInt(inputField.val()); /* get its value and parse it as integer */ 
    value += 1; /* add one */ 
    inputField.val(value); /* put the value back */ 
}); 

$(".subtract").click(function() { 
    var inputField = $(this).next('input'), 
     value = parseInt(inputField.val()); 
    value -= 1; 
    inputField.val(value); 
}); 
</script> 
@endsection 
+0

ページに複数の「id」を持つことはできません。一意である必要があります。むしろクラスを使用してください! – LinkinTED

+0

すべてのID(ボタンとフィールド)を接尾辞quantity_idとリンクすると、すべてのIDが異なり、quantity_idを使用して更新するフィールドを決めることができます – Ko2r

+0

JSは現在クラスを使用していますが、追加/最初の行では、ページのすべての入力フィールドに加算または減算されますか?また、ボタンの最初の行が動作する唯一のボタンです –

答えて

1

あなたのコード内のいくつかのエラーを持っている:まず、あなたが同じidは、あなたがこの種のもののためのクラスを使用することができ、複数の時間を持つことができません...しかも私はあなたを示唆しますあなたのスクリプトで何をして、あなたが増加している/デクリメントと少ないリスナーを持っているために、常に確認するために、そこからイベントを処理する、含むdiv要素にクラスを追加する

@section('loadjs') 
 
<script src="{{ jfi\asset_cb('/js/pagination.js') }}"></script> 
 
<script src="{{ jfi\asset_cb('/bower_components/uikit/js/components/slider.js') }}"></script> 
 
<script src="{{ jfi\asset_cb('/js/factory.js') }}"></script> 
 
<script src="{{ jfi\asset_cb('/js/jquery.min.js') }}"></script> 
 
<script type="text/javascript"> 
 
$('.incrementer-class-name').each(function() { 
 
    var $this = $(this); 
 
    var $input = $this.find('.md-input'); 
 
    $this.on('click', '.add-button', function() { 
 
    var val = parseInt($input.val()); 
 
    $input.val(++val); 
 
    }).on('click', '.remove-button', function() { 
 
    var val = parseInt($input.val()); 
 
    $input.val(--val); 
 
    }); 
 
}); 
 
</script> 
 
@endsection
@foreach ($pgroup->pskus as $psku) 
 
<tr> 
 
    <td> 
 
    <div class="incrementer-class-name"> 
 
     <button class="remove-button md-btn" style="width: 33%; min-width: 0; float: left; height: 30px;"><i class="material-icons">remove</i></button> 
 
     <input type="text" class="md-input" id="{{ $psku->quantity_id }}" name="count" onClick="this.setSelectionRange(0, this.value.length);" style="width: 33%; min-width: 0; float: left; margin: 0; text-align: center; height: 30px;" value='0' /> 
 
     <button class="add-button md-btn md-btn-success" style="width: 33%; min-width: 0; float: left; height: 30px;"><i class="material-icons">add</i></button> 
 
    </div> 
 
    </td> 
 
</tr> 
 
    @endforeach

+0

パーフェクト、素晴らしい作業!おかげで –

+0

嬉しいです:) –

3

は、ページ上のユニークなIDを持っている必要があります。

むしろ変更するid="add"からclass="id"です。

私は関数を更新しました。いくつかの説明については、コードのコメントを参照してください。

$(".add-button").click(function() { 
 
    var inputField = $(this).prev('input'), /* get the input field */ 
 
     value = parseInt(inputField.val()); /* get its value and parse it as integer */ 
 
    value += 1; /* add one */ 
 
    inputField.val(value); /* put the value back */ 
 
}); 
 

 
$(".remove-button").click(function() { 
 
    var inputField = $(this).next('input'), 
 
     value = parseInt(inputField.val()); 
 
    value -= 1; 
 
    inputField.val(value); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<table> 
 
    <tr> 
 
    <td> 
 
     <div> 
 
     <button class="remove-button md-btn" style="width: 33%; min-width: 0; float: left; height: 30px;"><i class="material-icons">remove</i></button> 
 
     <input type="text" class="md-input" id="{{ $psku->quantity_id }}" name="count" onClick="this.setSelectionRange(0, this.value.length);" style="width: 33%; min-width: 0; float: left; margin: 0; text-align: center; height: 30px;" value='0' /> 
 
     <button class="add-button md-btn md-btn-success" style="width: 33%; min-width: 0; float: left; height: 30px;"><i class="material-icons">add</i></button> 
 
     </div> 
 
    </td> 
 
    </tr> 
 
    <tr> 
 
    <td> 
 
     <div> 
 
     <button class="remove-button md-btn" style="width: 33%; min-width: 0; float: left; height: 30px;"><i class="material-icons">remove</i></button> 
 
     <input type="text" class="md-input" id="{{ $psku->quantity_id }}" name="count" onClick="this.setSelectionRange(0, this.value.length);" style="width: 33%; min-width: 0; float: left; margin: 0; text-align: center; height: 30px;" value='0' /> 
 
     <button class="add-button md-btn md-btn-success" style="width: 33%; min-width: 0; float: left; height: 30px;"><i class="material-icons">add</i></button> 
 
     </div> 
 
    </td> 
 
    </tr> 
 
    <tr> 
 
    <td> 
 
     <div> 
 
     <button class="remove-button md-btn" style="width: 33%; min-width: 0; float: left; height: 30px;"><i class="material-icons">remove</i></button> 
 
     <input type="text" class="md-input" id="{{ $psku->quantity_id }}" name="count" onClick="this.setSelectionRange(0, this.value.length);" style="width: 33%; min-width: 0; float: left; margin: 0; text-align: center; height: 30px;" value='0' /> 
 
     <button class="add-button md-btn md-btn-success" style="width: 33%; min-width: 0; float: left; height: 30px;"><i class="material-icons">add</i></button> 
 
     </div> 
 
    </td> 
 
    </tr> 
 
    <tr> 
 
    <td> 
 
     <div> 
 
     <button class="remove-button md-btn" style="width: 33%; min-width: 0; float: left; height: 30px;"><i class="material-icons">remove</i></button> 
 
     <input type="text" class="md-input" id="{{ $psku->quantity_id }}" name="count" onClick="this.setSelectionRange(0, this.value.length);" style="width: 33%; min-width: 0; float: left; margin: 0; text-align: center; height: 30px;" value='0' /> 
 
     <button class="add-button md-btn md-btn-success" style="width: 33%; min-width: 0; float: left; height: 30px;"><i class="material-icons">add</i></button> 
 
     </div> 
 
    </td> 
 
    </tr> 
 
</table>

+0

ありがとうございます、これを今すぐお試しください –

+0

あなたのスニペットは完全に機能しますが、何らかの理由で私のために機能しません。私は自分のコードの更新ブロックを素早く投稿します –

+0

あなたの答えに基づいて私の元の質問を新しいバージョンに更新しました。何らかの理由で今ボタンが動いていません –