更改foreach循环内的按钮文本

时间:2017-09-09 17:54:58

标签: javascript php jquery

我有一个按钮,当我点击该按钮时,它应该改变它的text.it在foreach循环内部。但问题是当我点击该按钮时,第一个按钮文本会发生变化。我想更改我点击的特定按钮文本。我该怎么办?

前端部分

@foreach($products as $product) 
    <button onclick="this.disabled=true;    quoteAdd('{!!$product->id!!}')" id="inquireButton"  class="btn btn-danger ">Inquire</button>
@endforeach

Javascript部分

function quoteAdd(productId)
{
    $("#inquireButton").html('Save');
    //    other code ..
}

2 个答案:

答案 0 :(得分:1)

您需要使用this关键字将按钮引用传递给quoteAdd方法,如下所示。

<强> PHP

@foreach($products as $product) 
    <button onclick="this.disabled=true; quoteAdd('{!!$product->id!!}', this)" id="inquireButton"  class="btn btn-danger ">Inquire</button>
@endforeach

<强> JS

function quoteAdd(productId, button) {
    $(button).text('Save');
    //other code ..
}

FYI id对每个元素都应该是唯一的。

答案 1 :(得分:0)

HTML中id属性的值应该是唯一的,所以基本上你所做的是错误的(你不应该在循环中有固定的id)。

无论如何,您都可以执行以下操作:

//前端部分

 @foreach($products as $product) 
    <button onclick="this.disabled=true; quoteAdd(this)" id="inquireButton_{!!$product->id!!}"  class="btn btn-danger ">Inquire</button>
 @endforeach

// Javascript Part

function quoteAdd(el)
{
    $(el).html('Save');
    // other code ..
}