2013-05-30 64 views
-2

我正在編寫一個代碼來從顯示錶中選擇/刪除產品,並且當產品被選中時,那麼產品的價格將顯示在其他表中這得到更新按所選產品的價格動態定價表清單

<table id="table-example" class="table"> 
    <thead> 
     <tr> 
      <th>Cause</th> 
      <th>Monthly Charge</th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr> 
      <div id="selectedServices"></div> 
      <td id="myDiv"></td> 
     </tr> 
    </tbody> 
</table> 
<p>&nbsp;</p> 
<p>&nbsp;</p> 
<p>&nbsp;</p> 
<p>&nbsp;</p> 
<table id="table-example" class="table"> 
    <thead> 
     <tr> 
      <th>Cause</th> 
      <th>Monthly Charge</th> 
     </tr> 
    </thead> 
    <div> 
     <tbody> 
      <p> 
       <tr> 
        <td> 
         <input type="checkbox" onclick="ToggleBGColour(this);" /> 
         <label>table</label> 
        </td> 
        <td>80</td> 
       </tr> 
       <tr> 
        <td> 
         <input type="checkbox" onclick="ToggleBGColour(this);" /> 
         <label>chair</label> 
        </td> 
        <td>45</td> 
       </tr> 
       <tr> 
        <td> 
         <input type="checkbox" onclick="ToggleBGColour(this);" /> 
         <label>set</label> 
        </td> 
        <td>10</td> 
       </tr> 
     </tbody> 
    </div> 
</table> 

腳本

$(function() { 
    $(":checkbox").change(function() { 
    var arr = $(":checkbox:checked").map(function() { return $(this).next().text(); }).get(); 
    $("#myDiv").text(arr.join(',')); 
    }); 
}); 

function ToggleBGColour(item) { 

    var td = $(item).parent();  

    if (td.is('.rowSelected'))  
     td.removeClass("rowSelected");  
    else   
     td.addClass("rowSelected");  

} 

以下是相應的fiddle

+4

什麼可行,什麼不行,您的問題是什麼? –

+0

我想顯示所選產品及其在uppr表中的相應價格,但與totl價格...如何顯示像 – user2325244

+0

你不應該有多個具有相同ID的元素。 –

回答

2

基於對我的其他回答您的意見,這應該爲你工作,然後:

$(":checkbox").change(function() { 
    // Toggle class of selected row 
    $(this).parent().toggleClass("rowSelected"); 

    // Get all items name, sum total amount 
    var sum = 0; 
    var arr = $(":checkbox:checked").map(function() { 
     sum += Number($(this).parents('tr').find('td:last').text()); 
     return $(this).parents('tr').clone(); 
    }).get(); 

    // Display selected items and their sum 
    $("#selectedServices").html(arr).find('input').remove(); 
    $("#total").text(sum); 
}); 

這避免了用於創建JavaScript代碼中新的HTML元素的需求,並降低.maps()的數量d .each()循環到一個

http://jsfiddle.net/samliew/uF2Ba/

+0

@samuel劉氏: 我已經更新這個小提琴http://jsfiddle.net/anujay/uF2Ba/9/ 現在我想發佈上述表(上表)值(選擇編輯數據形式下表)到數據庫,但選擇後沒有標籤來與產品名稱和價格如何排序呢? – user2325244

+0

這是因爲產品名稱和價格不是輸入字段。您可以創建隱藏的輸入字段,或者設置複選框字段的值。 –

0

下面是JavaScript,但ü需要刪除的onClick ATTRS:

$(function() { 
    $(":checkbox").change(function() { 
     ToggleBGColour(this); 
     var arr = $(":checkbox:checked").map(function() { 
      return $(this).next().text(); 
     }).get(); 

     var nums = $(":checkbox:checked").map(function() { 
      return parseInt($(this).parent().next().html()); 
     }).get(); 

     var total = 0; 
     for (var i = 0; i < nums.length; i++) { 
      total += nums[i] << 0; 
     } 


     $("#myDiv").text(arr.join(',') + 'total : '+total); 

    }); 
}); 


function ToggleBGColour(item) { 

    var td = $(item).parent();  

    if (td.is('.rowSelected'))  
     td.removeClass("rowSelected");  
    else   
     td.addClass("rowSelected");  

} 
+0

:我已經更新了這個提琴jsfiddle.net/anujay/uF2Ba/9現在我想發佈上面的表(上表)值(選定的數據形式下表)到數據庫,但選擇後沒有標籤來與產品名稱和價格如何排序? – user2325244

0

我對我的回答更新了提琴:http://jsfiddle.net/A2SKr/9/

這裏就是我已經改變了。

  • 格式稍好。
  • 我刪除了onclick屬性。由於性能問題使用它的不好的做法。使用代表
  • 我也改變了一點你的HTML。現在輸出的是表
  • 添加一個元素總的輸出以及
  • javascript代碼:

    $(":checkbox").change(function() { 
        var total = 0; 
        var check = $(":checkbox:checked"); 
        var causes = check.map(function() { 
         return $(this).next().text(); 
        }).get(); 
        var costs = check.map(function() { 
         return $(this).parent().next().text() 
        }).get(); 
        var tbody = $("#table-example tbody").empty(); 
        $.each(causes, function (i, cause) { 
         tbody.append("<tr><td>" + cause + "</td><td id='" + i + "'><td/></tr>"); 
        }); 
        $.each(costs, function (i, cost) { 
         $('#' + i + '').html(cost); 
         total += parseInt(cost, 10); 
        }); 
        tbody.append("<tr><td>Total</td><td>" + total + "<td/></tr>"); 
    }); 
    }); 
    
+0

:我已經更新了這個提琴jsfiddle.net/anujay/uF2Ba/9現在我想發佈上面的表(上表)值(選定的數據形式下表)到數據庫,但選擇後沒有標籤來與產品名稱和價格如何排序? – user2325244

+0

@ user2325244我不認爲你可以這樣做!如果您試圖從頂部表中選擇數據,那麼您不再搜索''標籤!這裏是一個更新的小提琴:http://jsfiddle.net/uF2Ba/11/ ..添加了一個點擊處理程序和一個按鈕,並打印出控制檯的值 – krishgopinath

+0

@passionteCoder是上表(顫音之一)的形式? – user2325244