2012-04-26 22 views
0

「アイテムを追加」ボタンがあるページがあります。このボタンをクリックすると、ajax呼び出しが行われ、入力されたSKUに基づいてデータベースからのすべての情報が返されたテーブルが返されます。 (ダミーデータはテストのためにそこにあります。)ボタンを1回だけクリックすると、qty値を増減するのに問題はありません。ボタンが2回以上クリックされた場合、2番目の表の増分ボタンをクリックすると、最初の表の値が増加します。テーブル内の1つのtdの値をインクリメント

作成した各テーブルに一意の番号を与えるカウンタを追加しました。私がしたいと思うのは、増分されている特定のテーブルのカウンタ番号を決定し、その特定のエントリで動作するようにjavascript関数に渡す方法を決定することです。ここで

は、ボタン、AJAX呼び出し、およびJavaScriptを使用してコードです:ここ

<script type="text/javascript"> 
    var count = 1; 
    $('#items').live('pageinit',function(event){ 
     $('#additem').click(function() { 
      //alert("add clicked"); 
      var request = $.ajax({ 
       url: "http://www.furnguy.com/app-pages/additem.php", 
       type: "POST", 
       data: {COUNTER : count}, 
       dataType: "html" 
      }); 

      request.done(function(html) { 
       //alert("here"); 
       if (html != '') { 
        $('#salesitems').append(html).trigger('create'); 
       } 
      }); 

      request.fail(function(jqXHR, textStatus) { 
       alert("Request failed: " + textStatus); 
      }); 
      count++; 
     }); 
    }); 


    function deleteItem() { 
     $('table').click(function(){ 
      $(this).parent().remove(); 
     }); 
    }; 
    function increaseQty() { 
     var currentVal = parseInt($("#qty").val()); 
     if (currentVal != NaN) { 
      $("#qty").val(currentVal + 1); 
     } 
    }; 
    function decreaseQty() { 
     var currentVal = parseInt($("#qty").val()); 
     if (currentVal != NaN) { 
      $("#qty").val(currentVal - 1); 
     } 
    }; 



</script> 
</head> 
<body> 
<div data-role="page" id="items" data-title="Sales Entry - Items"> 
    <div data-role="header"> 
     <h1>Sales Entry</h1> 
    </div><!-- /header --> 
    <div data-role="content"> 
     <div id="main_nav"> 
      <span style="float: left; display: inline; width: 100px;"> 
       <label>Enter SKU</label> 
      </span> 
      <span style="float: left; display: inline; width: 250px;"> 
       <input type="text" name="initialsku" id ="initialsku" /> 
      </span> 
      <br /><br /><br /> 
      <button id="additem" data-icon="plus" data-inline="true" data-mini="true" data-theme="b">Add Item</button> 

      <!-- <button id="removeitem" data-icon="minus" data-inline="true" data-mini="true" data-theme="b">Remove Item</button> --> 
      <div id="salesitems"></div> 
     </div> 
    </div><!-- /content --> 
</body> 
</html> 

は、Ajaxによって呼び出されるページです:

<?php 
$counter = $_POST['COUNTER']; 
?> 
<body> 

<div data-role="fieldcontain"> 
<div class="addItems"> 
    <table id="myTable" style="border-bottom: 1px solid black;"> 
     <tr> 
      <td style="width: 50px;"> 
       <label for="qty">Qty:</label> 
      </td> 
      <td style="width: 75px;"> 
       <input type="button" value="+" id="increase" onclick="increaseQty();" style="float: left; display: inline;" /> 
       <input type="button" value="-" id="decrease" onclick="decreaseQty();" style="float: left; display: inline;" /> 
       <input type="text" name="qty" id="qty" value="1" style="float: left; display: inline;" /> 
      </td> 
      <td style="width: 50px;"> 
       <label for="sku">SKU:</label> 
      </td> 
      <td style="width: 350px;"> 
       <input type="text" name="sku" id="sku" readonly="readonly" value="123526874256" /> 
      </td> 
      <td style="width: 50px;"> 
       <label for="retail">Retail:</label> 
      </td> 
      <td style="width: 250px;"> 
       <input type="text" name="retail" id="retail" readonly="readonly" value="$1599.99" /> 
      </td> 
      <td id="tableNumber"> 
       <?php echo $counter; ?> 
      </td> 
     </tr> 
     <tr> 
      <td style="width: 50px;"> 
       <label for="desc">Desc:</label> 
      </td> 
      <td colspan="5"> 
       <input type="text" name="desc" id="desc" readonly="readonly" value="This is a really big couch." /> 
      </td> 
      <td> 
       <input type="button" value="X" onclick="deleteItem();" /> 
      </td> 
     </tr> 
    </table> 
</div> 
</div> 

誰もがこのことについての提案がありますか?私は数日間、これについて現在作業しているので、本当に助けに感謝します。

ありがとうございます!

+0

私は完全に理解していますが、これは助けになるでしょう...各テーブルには、それらが作成されるときに 'tableID1'や' tableID2'次に、jQueryを使用して、$(this).attr( 'id'))。substring(7)を実行してテーブルのIDを取得できます。このIDはあなたのajax呼び出しに渡すことができ、クラス 'tableID + id'のテーブル内のフィールドをインクリメントするためだけに使われます。 – Timm

+0

アイデアに感謝します。アイテムの追加ボタンを1回クリックすると、増減ボタンが大きく機能します。たとえば、アイテムの追加ボタンが2回クリックされ、2番目の行で増減ボタンがクリックされると、1番目の行の数字が変更されます。 – Paul

+0

次に、一意のidメソッドを使用する必要があります。それ以外の場合、jQueryは、そのクラス名で最初の値を選択します。希望するものではありません。 – Timm

答えて

1

ボタンをクリックするたびに#qty入力の新しい表が挿入されます。後で量を増やそうとすると、jQueryはdomの最初の#qty、つまり最初のテーブルを見つけます。

あなたはおそらく、あなたの数量の入力に固有のID、例えば:

<input type="button" value="+" id="increase" onclick="increaseQty('qty_<?php echo $_POST['INITIALSKU']; ?>');" style="float: left; display: inline;" /> 
<input type="button" value="-" id="decrease" onclick="decreaseQty('qty_<?php echo $_POST['INITIALSKU']; ?>');" style="float: left; display: inline;" /> 
<input type="text" name="qty" id="qty_<?php echo $_POST['INITIALSKU']; ?>" value="1" style="float: left; display: inline;" /> 

を設定し、変更するフィールドのIDを取るために増加/減少機能を書き換える必要があります。私は実際にPHPを話すことはありませんが、あなたはそのアイデアを得ます。

+0

返信、Mark and Timに感謝します。たぶん私はこの時点ですべてを考えているだけですが、どのように変化するIDを得ることができますか?私はgetElementById()を考えていますが、idが動的に設定されている場合は、何も呼び出す必要はありません。 – Paul

+0

上記のコードを見ると、idがincreaseQty(id)に渡されています。あなたはちょうど$( "#" + id).val –

+0

それができました!私は本当に全部を考えていた。あなたがあまりにも長い間それを目の当たりにしているときに起こる、と思います。どうもありがとうございます!!! – Paul

関連する問題