2017-05-26 18 views
0

新しい行を挿入したリストがあります。それ以降のすべてのシーケンス番号を1つ増やしたい。値より大きい場合は1を加算します

<div class="modal" id="insertroom" style="display: none;"> 
    <button class="dismiss right button"><i class="fa fa-close"></i></button> 
    <h3>Insert a room in the route</h3> 
    <p><span class="fixed-width">Room name:</span> 
     <input name="room_id" id="room_id"/> 
      </p> 
     <p><span class="fixed-width">Sequence number in the route:</span> <input type="number" id="newsequencenumber" name="sequence" value=""></p> 
    <p><span class="fixed-width">Route name:</span> 
     <input name="route_number" id="route_number"/> 
      </p> 
    <p><input type="button" class="button" id="insertdetails" name="insertdetails" value="Insert details"></p> 
</div> 

    <ul class="ui-listview"> 
     <li><span class="half-fixed-width">AB101B</span> 
    Sequence: 
     <input type="number" class="sequence" name="sequence" value="1"> 
     <a class="button inserthere" title="insert room here" href="#" rel="1"> 
      <i class="fa fa-plus-square"></i> 
     </a> 
     </li> 

それはむしろ挿入された行のシーケンス番号よりも大きい値を持つ唯一のものよりも、1すべての数値をインクリメントするので、私は以下のコードを書いたが、それはif(new_sequence_number > thisval)部分を無視しているように見えます。関数のパラメータでnew_sequence_number

$('#insertdetails').on('click', function() { 
    /*get values input into modal */ 
    var new_sequence_number = $('#insertroom #newsequencenumber').val(); 
    var new_room_id = $('#insertroom #room_id').val(); 
    var new_route_id = $('#insertroom #route_number').val(); 
    /*put those values into the new row */ 
    $('#new_room_id' + new_sequence_number).val(new_room_id); 
    $('#new_route_id' + new_sequence_number).val(new_route_id); 
    $('#insertroom').hide(); 
    $('.overlay').hide(); 

    $('.sequence').filter(function(new_sequence_number) { 
    var thisval = parseInt($(this).val()); 
    var plusone = thisval + 1; 
    if(thisval > new_sequence_number) { 
     $(this).val(plusone); 
    } 
    }); 
}); 
+0

私は、同様のタイトルを持つすべての質問をチェックしますが、それらのどれも私の問題 –

+3

セット内の要素のインデックスになりますnew_sequence_number'あなたが '名付けましたパラメータを解決していないが - あなたは何を期待しているということですそれは何ですか?あなたが設定することができる、または少なくとも関連するHTMLを表示するのに役立つかもしれません –

+1

あなたの説明が正しい場合、あなたは間違ったIF句を持っています。 'thisval> new_sequence_number'でなければなりません。値がシーケンス番号より大きい場合、あなたは言った。 – yomisimie

答えて

1

は新しい変数で、その上で宣言「new_sequence_number」を参照しません。外部変数を使用するには、このパラメーターを省略できます。純粋

$('.sequence').each(function() { 
    // .. 
    if(thisval >= new_sequence_number) { 
    //.... 

答えは以下、それ自体が非常に短いと思われるための代替である:D

val()値が操作可能な引数として関数を取ることができます。この方法の欠点は、入力が同じであっても、すべての入力が設定されることです。利点は、すべてのロジックが短く単一の関数呼び出しにあることです。

$('.sequence').val(function(ind,v) {  
    return (v = +v) < new_sequence_number ? v : ++v; 
    }); 
+0

ありがとう。私は最初のものを使いました。 –

関連する問題