2011-09-29 60 views
1

我有一種複雜的php,html腳本,用於創建交互式設計。我使用重複表,我基本上克隆特定錶行的內容並將其附加到表的末尾。當我在選擇菜單中選擇某個選項時,相應的文本框將更新爲正確的值。然而,克隆行行爲不正確jquery動態更改文本框值更改表格行克隆後

我問的是如果有一種方法,使這個領域也改變了價值觀。以下是用於添加/克隆行的各種代碼 。請注意,ID信息是一個錶行

$("#addrow1").click(function(){ 
     //alert("It works"); 

     //$('#description tr:last').after('<tr>...</tr>'); 
     $('#details').clone().appendTo('#dailyexpense');  


      }); 

代碼改變文本框的id和文本值

$("#cities").live('change',function(){ 
var cityrates = $("#cities :selected").val(); 
var brkfstrates = (0.2 * cityrates).toFixed(1); 
$("#brkfasttxt").val(brkfstrates); 
$("#brkfastchk").val(brkfstrates); 
var lunchrates = (0.3 * cityrates).toFixed(1); 
$("#lunchtxt").val(lunchrates); 
$("#lunchchk").val(lunchrates); 
var dinnerrates = (0.3 * cityrates).toFixed(1); 
$("#dinnertxt").val(dinnerrates); 
$("#dinnerchk").val(dinnerrates); 
var incdntlrates = (0.2 * cityrates).toFixed(1); 
$("#incidentltxt").val(incdntlrates); 
$("#incidentlchk").val(incdntlrates); 
}); 

我的錶行代碼,這個被瀏覽器加載一個

<tr id="details"> 
     <td><label for="date"></label> 
     <input style="background-color:#CCC;" type="text" name="date" id="date" /></td> 
     <td><label for="cities"></label> 
     <select name="cities" id="cities" style="background-color:#CCC; width:220px;"> 
     <?php   
foreach($country as $makassi1){ 
$selectcities = "SELECT City, Country, Rate FROM perdiem_rates WHERE Country = '$makassi1'"; 
$checkcity = mysql_query($selectcities)or die(mysql_error()); 
$countcities = mysql_num_rows($checkcity); 

while($row=mysql_fetch_assoc($checkcity)) 
{ 

    $countries = ($row['Country']); 
    $names =($row['City']) ; 
    $rate =($row['Rate']) ; 
    $ratess=$countries."-".$names 
    ?> 

<option id="cityoptrates" value="<?php echo $rate; ?>"> 
<?php echo $ratess; ?> 
</option> 
<?php  
} 
}   
     ?> 
     </select></td> 
     <td><input name="brkfastchk" type="checkbox" class="chkbox" id="brkfastchk" /> 
     <label for="brkfasttxt"></label> 
     <input style="background-color:#CCC;" name="brkfasttxt" type="text" id="brkfasttxt" size="5" readonly="readonly" /> 
     <label for="brkfastchk"></label></td> 
     <td><input type="checkbox" name="lunchchk" id="lunchchk" class="chkbox" /> 
     <label for="lunchtxt"></label> 
     <input style="background-color:#CCC;" name="lunchtxt" type="text" id="lunchtxt" size="5" readonly="readonly" /> 
     <label for="lunchchk"></label></td> 
     <td><input type="checkbox" name="dinnerchk" id="dinnerchk" class="chkbox" /> 
     <label for="dinnertxt"></label> 
     <input style="background-color:#CCC;" name="dinnertxt" type="text" id="dinnertxt" size="5" readonly="readonly" /> 
     <label for="dinnerchk"></label></td> 
     <td><input type="checkbox" name="incidentlchk" id="incidentlchk" class="chkbox" /> 
     <label for="incidentltxt"></label> 
     <input style="background-color:#CCC;" name="incidentltxt" type="text" id="incidentltxt" size="5" readonly="readonly" /> 
     <label for="incdntchk"></label></td> 
     <td colspan="2"><label for="daily_totals"></label> 
     <input style="background-color:#CCC;" name="daily_totals" type="text" id="daily_totals" size="5" /></td> 
    </tr> 

根據上述我的textfield值更改代碼完美地工作與第一個初始行。克隆的行不起作用。唯一一個在克隆行上工作的是用於選擇城市的選擇菜單。需要幫助。接受建議和改進。

鏈接到實際的代碼中的jsfiddle http://jsfiddle.net/NAafu/10/

+0

僅供其他人使用 - 我認爲Max's的其他問題的解決方案也將解決此問題。 http://stackoverflow.com/questions/7620736/jquerysum-values-of-checkbox-on-same-row-to-textfield-on-same-row – mrtsherman

回答

1

在你的情況,也許你也應該克隆事件:

$('#details').clone(true).appendTo('#dailyexpense'); 

clone()

編輯的文檔中所述 - 這個問題也許是您正在使用僅返回一個元素的ID選擇器($("#cities").live)。 Ids在頁面上應該是唯一的,您應該使用類別

+0

試過,但它沒有奏效。有關ID和類的內容應該是動態生成的或唯一的。不管怎麼說,還是要謝謝你。我不明白的是爲什麼克隆的#cities有效。 – MaxI

+0

如果你在jsFiddle上發佈一個例子,也許我們可以幫助你更好 –

+0

我有php代碼與數據庫交互。這會工作還是我張貼虛擬代碼?我對jsfiddle完全陌生 – MaxI