Laravel在使用for循环创建的jquery中获取动态单选按钮的值

时间:2018-06-01 23:13:04

标签: javascript jquery ajax laravel-5

我的视图中有一个表单,我使用数据库中的数据填充了一些动态单选按钮。代码看起来像这样 -

<div class="row">
@foreach($status as $s)
    <div class="col-md-6">
        <label class="custom-control custom-radio">
            <input id="status" name="status" value="{{$s->id}}" type="radio" class="custom-control-input">
            <span class="custom-control-indicator"></span>
            <span id="status-name" class="custom-control-description">
                {{$s->specification}}
            </span>
        </label>
    </div>
@endforeach
</div

和HTML -

 <div class="col-md-6">
    <label class="custom-control custom-radio">
        <input id="status" name="status" value="1" type="radio" class="custom-control-input">
        <span class="custom-control-indicator"></span>
        <span id="status-name" class="custom-control-description">Yes</span>
    </label>
</div>                                  

                                                               是                                                                                             是                          

现在我想通过ajax将它发送给控制器。我试过这个 -

var status = document.getElementsByName('status').value;
if(status) {
    $.ajax({
       url: '/getpriceajax'+'/'+status,
       type: "GET",
       dataType: "json",
       success:function(data) {
           $('#calculated_price').val(data[0]);
           document.getElementById("price-show").innerHTML = "Product price is "+ data[0]+"and "+data[1];           
           $(".phone-value-details").slideDown(700);
           return false;
       }
   });
}else{

}

但它总是发送第一个单选按钮的值,无论它是否被选中。我已经意识到它正在发生,因为两个单选按钮具有相同的名称,默认情况下,jquery是第一个。所以,我想到动态重命名它们。像 -

name="status_{{$s->id}}"

但我不知道如何在Jquery中访问这个动态名称或id。

2 个答案:

答案 0 :(得分:1)

您无需更改status输入的名称。但是您需要更改id属性以使其在整个文档中unique。或者只是在客户端脚本或CSS中不需要它们时才使用它们。

要获取status的值,请使用以下代码:

var status = $('input[name="status"]:checked').val();

答案 1 :(得分:1)

您可以使用

    $('input[name="status"]').each(function () {
        if($(this).is(':checked')){
            // $.ajax code with $(this).val()
        }
    });