【问题标题】:Ajax jquery button that on change changes color and the value of a coloumn to true or falseAjax jquery 按钮更改颜色和列的值为真或假
【发布时间】:2016-08-21 22:39:47
【问题描述】:

所以我有这个

ECDLpayments -> ecdp_Payed = boolean true or false

控制器

  public function addUserPayments()
{
    if (Request::ajax()) {
        $input = Input::all();

        $newpayment = new ECDLPayments();
        $newpayment->ecdp_homeStudid = $input['userpaymentid'];
        $newpayment->ecdp_Amount = $input['userpaymentamount'];
        $newpayment->ecdp_DatePayed = date('Y-m-d', strtotime($input['date']));
        $newpayment->ecdp_Receipt = $input['userpaymentreceipt'];

        $newpayment->save();

        $result = DB::table('ECDLPayments')
            ->where('ecdp_ID', $newpayment->ecdp_ID)
            ->get();

        return $result;
    }
}

public function deleteUserPayments()
{
    if (Request::ajax()) {
        $input = Input::all();

        ECDLPayments::find($input['ecdpid'])->delete();
        return 'ok';
    }
}

Ajax/jquery 代码

//USER PAYMENTS
$('#insert-user-payments-btn').click(function(e){
    e.preventDefault();
    var userpaymentstable = $('#user-payments-table');

    var userpaymentamount = $('#userpaymentamount').val();
    var date = $('#userpaymentdate').val();
    var userpaymentreceipt = $('#userpaymentreceipt').val();
    var userpaymentid = $('#paymentuserid').val();

    if(userpaymentamount == '' || date == '' || userpaymentreceipt==''){
            alert('');
    } else {
        $.ajax({
            type:'POST',
            url:base_url+'/addUserPayments',
            data:{
                userpaymentamount:userpaymentamount,
                date:date,
                userpaymentreceipt:userpaymentreceipt,
                userpaymentid:userpaymentid
            },
            success: function(data){
                var fullDate = new Date(data[0].ecdp_DatePayed);
                var twoDigitMonth = ((fullDate.getMonth().length+1) === 1)? (fullDate.getMonth()+1) : '0' + (fullDate.getMonth()+1);
                var currentDate = fullDate.getDate() + "-" + twoDigitMonth + "-" + fullDate.getFullYear();
                console.log(data);
                userpaymentstable.show();
                userpaymentstable.find('tbody').append(
                    "<tr data-id="+data[0].ecdp_ID+">" +
                    "<td class='col-md-3'>"+data[0].ecdp_Amount+"</td>"+
                    "<td class='col-md-4'>"+currentDate+"</td>"+
                    "<td class='col-md-4'>"+data[0].ecdp_Receipt+"</td>"+
                    "<td class='col-md-1 text-center'><a class='btn btn-danger remove-payment'><i class='fa fa-trash'></i></a><a class='btn btn-success change-payment-status'><i class='fa fa-check-circle'></i></a></td>"+
                    "</tr>")
            }
        });
    }

});

$(document).on('click','.remove-payment',function(){
    var ecdpid = $(this).closest('tr').data('id');
    var tr = $(this).closest('tr');

    $.ajax({
        type:'POST',
        url: base_url+'/deleteUserPayments',
        data: {ecdpid: ecdpid},
        success: function(data){
            tr.remove();
        }
    });
});

路线

Route::post('addUserPayments',"UserController@addUserPayments"); Route::post('deleteUserPayments',"UserController@deleteUserPayments");

我希望按钮 change-payment-status 将 ecdp_Payed 的值更改为 true/false,但默认为 true 并更改颜色为绿色/红色,就像使用 ajax 和 jquery 的删除按钮一样

【问题讨论】:

  • 您的问题/疑问究竟是什么?
  • @JordiNebot 需要一个将特定列的值更改为 true 或 false 的按钮

标签: php jquery ajax laravel


【解决方案1】:

通过在下面的示例中添加 sn-p 来更改 ajax 调用的最后几行

    $.ajax({
                type:'POST',
                url:base_url+'/addUserPayments',
                data:{
                    userpaymentamount:userpaymentamount,
                    date:date,
                    userpaymentreceipt:userpaymentreceipt,
                    userpaymentid:userpaymentid
                },
                success: function(data){
                    var fullDate = new Date(data[0].ecdp_DatePayed);
                    var twoDigitMonth = ((fullDate.getMonth().length+1) === 1)? (fullDate.getMonth()+1) : '0' + (fullDate.getMonth()+1);
                    var currentDate = fullDate.getDate() + "-" + twoDigitMonth + "-" + fullDate.getFullYear();
                    console.log(data);
                    userpaymentstable.show();
                    userpaymentstable.find('tbody').append(
                        "<tr data-id="+data[0].ecdp_ID+">" +
                        "<td class='col-md-3'>"+data[0].ecdp_Amount+"</td>"+
                        "<td class='col-md-4'>"+currentDate+"</td>"+
                        "<td class='col-md-4'>"+data[0].ecdp_Receipt+"</td>"+
                        "<td class='col-md-1 text-center'><a class='btn btn-danger remove-payment'><i class='fa fa-trash'></i></a><a class='btn btn-success change-payment-status'><i class='fa fa-check-circle'></i></a></td>"+
                        "</tr>");

//////////////////////////////////////////////////////////////////////////    
                    data[0].ecdp_Payed = true;
                    $(document).on('click','.change-payment-status',function(){
                        $(this).toggleClass("btn-success btn-danger");
                        data[0].ecdp_Payed = !data[0].ecdp_Payed;
                    });
//////////////////////////////////////////////////////////////////////////    
                }

【讨论】:

  • 所以我在 jquery 中这样做?
  • 是的。在每个单击按钮类和 ecdp_Payed 值切换。我没有机会测试它,因为我没有data 的样本。 @J.Petrov 你试过了吗?
  • 明天当我到达那个项目时,我会找到你,但它可能会像它接缝一样工作!
猜你喜欢
  • 2011-05-22
  • 1970-01-01
  • 2014-01-25
  • 1970-01-01
  • 1970-01-01
  • 2014-08-27
  • 2019-04-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多