2014-01-12 52 views
1

案例
我已經制作了一個表單,您可以使用文章進行訂購。文章以另一種形式插入表格中。在這些表格中,文章會保存有文章代碼,說明和價格。jQuery根據選擇值並結合多行(父函數?)填充表格中的文本輸入

這個想法是,您在表單中選擇一篇文章來下訂單。如果您選擇文章(帶有選擇輸入),價格會自動填入「價格」輸入字段。

問題
此刻我的問題是,當你選擇一排的一篇文章,該腳本中相關文章價格填補了所有其他行,而不是僅在選擇輸入是在該行中 我想我必須在我使用的Ajax代碼中使用partent函數,但我不知道該怎麼做。

誰能給我一些建議嗎?

我用下面的阿賈克斯/ jQuery腳本:

<script type="text/javascript"> 
    jQuery(document).ready(function(){ 
     var id = $(this).parent(); 
     jQuery('#Article_ID').live('change', function(event) { 
      $.ajax({ 
       url  : 'getData.php', 
       type : 'POST', 
       dataType: 'json', 
       data : $('#myForm').serialize(), 
       success: function(data) { 
         for(var id in data) {   
           $(id).val(data[id]); 
         } 
       } 
      }); 
     }); 
    }); 
</script> 

的的getData文件包含以下代碼:

$clientId = "-1"; 
if (isset($_POST['Article_ID'])) { 
    $clientId = $_POST['Article_ID']; 
} 
mysql_select_db($database_connDatabase, $connDatabase); 
$query_Recordset1 = sprintf("SELECT * FROM articles WHERE id = %s", GetSQLValueString($Article_ID, "int")); 
$Recordset1 = mysql_query($query_Recordset1, $connDatabase) or die(mysql_error()); 
$row_Recordset1 = mysql_fetch_assoc($Recordset1); 
$totalRows_Recordset1 = mysql_num_rows($Recordset1); 

$add1 = $row_Recordset1['description']; 
$add2 = $row_Recordset1['price']; 

$arr = array('input#description' => $add1, 'input#price' => $add2); 
echo json_encode($arr); 

mysql_free_result($Recordset1); 

的形式包含了規則如下代碼:

<script type="text/javascript"> 
var count = 0; 
$(function(){ 
    $('p#add_field').click(function(){ 
     count += 1; 
     $('#container').append('<div class="regel"><select id="Article_ID" name="Article_ID" style="width:17px; height:30px; border:none;margin-right:0px;"><option value="">Select</option><option value="1">1</option><option value="2">2</option></select><input id="description" name="description[]' + '" type="text" class="field-l" style="width:425px"/><input id="price" name="price[]' + '" type="text" value="0.00" class="field-l" style="width:75px; margin-left:6px; text-align:right"/></p>'); 
    }); 
}); 
</script> 

回答

0

the script fills in the associated article price in all the other rows instead of only in the row where the select input is in

這是由於這樣的事實,你用追加的ID相同的新行onClick<div class="regel">..</div>):Article_IDdescriptionprice。屬性ID必須是唯一的。

嘗試。 旁的更改(PHP):

$arr = array('input#description' => $add1, 'input#price' => $add2); 
echo json_encode($arr); 

到:

$arr = array('description' => $add1, 'price' => $add2); 
echo json_encode($arr); 
die; 

更改JS

jQuery('#Article_ID').live('change', function(event) { 
     var parent = $(this).parent(); // current `<div class="regel">` 
     $.ajax({ 
      url  : 'getData.php', 
      type : 'POST', 
      dataType: 'json', 
      data : $('#myForm').serialize(), 
      success: function(data) { 
       $(parent+" #description").val(data.description); // 
       $(parent+" #price").val(data.price); 
      } 
     }); 
    }); 
相關問題