2015-11-18 56 views
1

我正在使用Laravel 4.2。我有一个foreach语句中形式:Onchange不能在循环中工作

@foreach($result as $key => $prices) 
$endforeach 

这里面foreach循环,我有一个表格:

<div class="col-md-3 slide_content"> 
    <div class="form-group"> 
     <label for="">How many car?</label> 
     <select class="form-control" name="number_of_car" id="car_no"> 
      <option value="" selected>select car numbers</option> 
      <option value="1">1</option> 
      <option value="2">2</option> 
      <option value="3">3</option> 
      <option value="4">4</option> 
      <option value="5">5</option> 
     </select> 
    </div> 
</div> 

<div class="col-md-3 slide_content"> 
    <div class="form-group"> 
     <label for="">Method to pay?</label> 
     <select class="form-control" name="payment_method" id="ad_tt"> 
      <option value="">Select Type</option> 
      <option value="1">Full Payment</option> 
      <option value="2">Advance Payment</option> 
     </select> 
    </div> 
</div> 

这里是我的Javascript代码:

$(document).ready(function(){ 
    $("#car_no").change(function(){ 
     var number_of_car = $("#car_no option:selected").val(); 
     var payment_type = $("#ad_tt option:selected").val(); 
     var amount = "<?php $ad = $prices->totalAmount; echo 'Rs: '.$ad; ?>"; alert(amount); 
    }); 
}); 

我的问题是,当我更改第一个循环以外的行的选项值,我只获得第一个行的值。但是,我需要从相应的行中获取。那么,我怎么能用jQuery来做到这一点。

任何帮助,将不胜感激。谢谢。

回答

1

您必须使用class而不是id,因为id在DOM中必须是唯一的。在这里,您触发id = car_no的更改事件,您必须通过向id添加迭代器值来使其唯一。

$("#car_no").change(function() {} //should replace with 
$(".car_no").change(function(){ 
// use $(this).attr('data') to identify the element. 
} 
+0

感谢您的回复。但是,当我警惕时,它正在从最后的循环陈述中获得价值。但是,我想要显示各自循环的值。 – vijayrana

+0

我试图展示的是选择不同循环的不同数量。任何帮助,将不胜感激 – vijayrana

+0

@vijayrana,你有没有通过我的回答 – Satpal

1

标识在HTML中必须是唯一的。这是预期的行为。可以使用公共类并使用关系来使用各种方法遍历DOM。

下面我用car_noad_tt作为CSS类select元素

HTML

<div class="col-md-3 slide_content"> 
    <div class="form-group"> 
     <label for="">How many car?</label> 
     <select class="form-control car_no" name="number_of_car" data-amount="<?php $ad = $prices->totalAmount; echo 'Rs: '.$ad; ?>"> 
     </select> 
    </div> 
</div> 

<div class="col-md-3 slide_content"> 
    <div class="form-group"> 
     <label for="">Method to pay?</label> 
     <select class="form-control ad_tt" name="payment_method"> 
     </select> 
    </div> 
</div> 

SCRIPT

$(document).ready(function(){ 
    $(".car_no").change(function(){ 
     var number_of_car = $(this).val(); 
     var payment_type = $(this).closest('.slide_content').next('.slide_content').find(".ad_tt").val(); 

     var amount = $(this).data("amount"); 
     alert(amount); 
    }); 
}); 
+0

是的,我已经通过你的答案。但它其实不是我想要的。我只是在更改第一行的选择选项(第一个循环元素)时获取最后一个元素的金额值 – vijayrana

+0

@vijayrana,您正在使用'amount =“<?php $ ad = $ prices-> totalAmount; echo'Rs: '。$ ad;?>“;'所以你期望得到__amout__正在填充php – Satpal

+0

是的,它是填充量。最后循环数量的值是Rs:38903。但是当我改变第一行(循环)的选项时,我我得到Rs:38903.我应该得到卢比:3117 – vijayrana

1

不能使用标识超过一个元素。你必须使用课堂。

<select class="form-control" name="number_of_car" class="car_no" > 

var number_of_car = $(this).val(); 

同样得到了其他下拉列表中值。