Jquery将值传递给单选按钮

时间:2016-11-21 14:07:11

标签: php jquery laravel

我使用jquery ajax代码来运行搜索功能。

到目前为止,这是我的ajax:

$('button[type="search"]').click(function(e) {
$.ajax({
    url: "{{ route('fine.search') }}",
    type: "POST",
    data: { 
        '_token' : '{{csrf_token() }}',
        'driver_id' : $('select[name="driver_id"]').val(),
        'fine_date' : $('input[name="fine_date"]').val(),
    },
    success: function(data) { 
        if(data.status == true) { 
        var result= $('#search-result'); 

        $.each(data.getCarbyDriver, function(i, data) {  
        PlateEle = $('<input/>').attr({ type: 'radio', name:'rad'});
                    $("#search-result").html(data.plate_no); 
        StartEle = $('<div />').html(data.start_time); 
        EndEle = $('<div />').html(data.end_time); 
        }); 
        $('#search-result').append(PlateEle, StartEle, EndEle);  
        }
    },
    error: function(data) {

    } 
});  
});

并在我的网络上以这样的方式返回数据(inpect元素):

car_id:5
driver_id:1
end_time:"2016-11-16 18:00:00"
plate_no:"DFE82846J"
start_time:"2016-11-16 08:00:00"
working_date:"2016-11-16 00:00:00"

到目前为止,这是表单刀片代码:

<div class="row top">
<div class="col-xs-4 col-sm-4 col-md-4">
    <div class="form-group">
        <label class="control-label">Driver Name:</label>
        {!! Form::select('driver_id', $driver, null, array('class' => 'form-control')) !!}
    </div>
</div>

<div class="col-xs-4 col-sm-4 col-md-4">
    <div class="form-group">
        <label>Fine Date:</label>
        {!! Form::text('fine_date', null, array('id' => 'datetimepicker', 'class' => 'form-control')) !!}
    </div>
</div>

<div class="col-xs-4 col-sm-4 col-md-4">
    <div class="form-group filter-btn">
        <button class='btn btn-info' type='search'>Search</button>
    </div>
</div>
</div>

<div class="row mid ">
<div class="col-xs-4 col-sm-4 col-md-4">
    <div id="search-result"></div>
</div>
</div>

问题是我无法保存。它抛出错误car_id&#39;不能为空&#39;。

如何将car_id传递到我的收音机中,所以一旦我点击单选按钮,它就会通过plate_no保存car_id

即时使用laravel 5.3

3 个答案:

答案 0 :(得分:0)

我不清楚你在哪里定义了PlateEle,StartEle和EndEle。这些全局变量是否在您的javascript中定义?

无论哪种方式,据我所知,car_id是由ajax POST返回的,所以它在数据var中返回到你的成功函数?

如果你想在动态创建的无线电元素中设置值,我认为就是这样:

PlateEle = $('<input/>').attr({ type: 'radio', name:'rad'}).val(data.car_id);

这是我嘲笑的一个例子。我正在创建一个数据对象,就像我认为你所说的那样。当我加载这个页面时,我得到一个无线电输入。这对你有用吗?

<html>
<head>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script>
    <script type="text/javascript">
    $(document).ready(function(){
        var result= $('#search-result');

        //mocking up what I assume your data object looks like
        var data = {};
        data.car_id=5;
        data.driver_id=1;
        data.end_time="2016-11-16 18:00:00";
        data.plate_no="DFE82846J";
        data.start_time="2016-11-16 08:00:00";
        data.working_date="2016-11-16 00:00:00";


        PlateEle = $('<input/>').attr({ type: 'radio', name:'rad'}).val(data.car_id);
        console.log(PlateEle);
        $("#search-result").html(data.plate_no);
        StartEle = $('<div />').html(data.start_time);
        EndEle = $('<div />').html(data.end_time);
        $('#search-result').append(PlateEle, StartEle, EndEle);
    });
</script>
</head>
<body>
    <div id="search-result"></div>
</body>
</html> 

答案 1 :(得分:0)

要在输入广播中保存该值,这可能会成为诀窍:

$.ajax({
    url: "{{ route('fine.search') }}",
    type: "POST",
    data: { 
        '_token' : '{{csrf_token() }}',
        'driver_id' : $('select[name="driver_id"]').val(),
        'fine_date' : $('input[name="fine_date"]').val(),
    },
    success: function(data) { 
        if(data.status == true) { 
        var result= $('#search-result'); 

        $.each(data.getCarbyDriver, function(i, data) {  
        PlateEle = $('<input type="radio" name="rad" val="'+data.car_id+'">'+data.car_id+'</input>');
                    $("#search-result").html(data.plate_no); 
        StartEle = $('<div />').html(data.start_time); 
        EndEle = $('<div />').html(data.end_time); 
        }); 
        $('#search-result').append(PlateEle, StartEle, EndEle);  
        }
    },
    error: function(data) {

    } 
}); 

答案 2 :(得分:0)

好吧,添加或更改单选按钮的值很简单。对于数据库中的ID,您还可以在单​​选按钮上使用一些data- *属性。但请记住,如果表单是在浏览器中提交的,则表单元素上的data- *将不会发送到服务器。有关更多详细信息,请参阅下面的工作代码示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Test Radio Button</title>

    <script type="text/javascript" src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
    <script type="text/javascript">
        var $rdBtn = null;
        var $txtReader = null;
        var $txtRdBtnValueReader = null;
        function doReady() {
            $rdBtn = $("#myRdBtn");
            $txtReader = $("#txtDataReader");
            $txtRdBtnValueReader = $("#txtRdBtnValueReader");
            $("#btnSetValue")
                    .click(function () {
                        // note the jQuery .val("some text") issue at this point. You will need .attr("value") for setting
                        // .val() is just helpful for reading the current value!
                        $rdBtn.attr("value", "my new value");
                        $txtRdBtnValueReader.attr("value", $rdBtn.val());
                    });
            $("#btnSetDataValue")
                    .click(function () {
                        $rdBtn.data("mykey", "myval");
                        $txtReader.attr("value", $rdBtn.data("mykey"));
                    });
        }
        $(document).ready(doReady);
    </script>
</head>
<body>
    <button type="button" id="btnSetValue">set Value</button>
    <button type="button" id="btnSetDataValue">set data-* value</button>
    <div id="myRadioButtonWrapper">
        <label for="myRdBtn">your value choice</label>
        <input type="radio" id="myRdBtn" name="myRdBtn" value="to be replaced" />
        <br />
        <label for="txtRdBtnValueReader">radio value</label>
        <input type="text" id="txtRdBtnValueReader" name="txtRdBtnValueReader" readonly />
        <br />
        <label for="txtDataReader">data-mykey value</label>
        <input type="text" id="txtDataReader" name="txtDataReader" readonly />
    </div>
</body>
</html>

如果您需要将更多数据分配给输入字段以将其值序列化为json,这也是一种常见方法。因此,您可以将整个对象发送到服务器。在PHP中再次解析很容易。也许这对你也有帮助。祝你好运!