кнопка удалить не удалить продукт - PullRequest
0 голосов
/ 23 января 2020

Я пытаюсь включить кнопку удаления в сообщение javascript. Когда я нажимаю на tra sh, у меня появляется сообщение, подтверждающее действие. Но если у меня есть 3 продукта, сообщение появляется 3 раза, 2 продукта, 2 раза. Также продукт не удаляется после нажатия на кнопку подтверждения.

Спасибо

           $form = HTML::form('cart_quantity', CLICSHOPPING::link(null, 'Cart&Update'), 'post', 'role="form" id="cart_quantity"', ['tokenize' => true]);

           for ($i=0, $n=count($products); $i<$n; $i++) {
              $products_name_url = $this->getProductsUrlRewrited()->getProductNameUrl($this->getProductID($products[$i]['id']));

              $products_name = HTML::hiddenField('products_id[]', $products[$i]['id']);
              $products_name .= HTML::link($products_name_url, $products[$i]['name']);

    //no message
    //          $trash = HTML::link($this->link(null, 'Cart&Delete&products_id=' . $products[$i]['id']), '<i class="fas fa-trash"></i>', 'alt="' . $this->getDef('button_remove')) . '&nbsp;&nbsp;&nbsp;'; ==> works fine but no message



    //with message
              $remove_product = ['params' => 'id="remove_product' . $products[$i]['id'] .'"'];
              $trash = HTML::link($this->link(null, 'Cart&Delete&products_id=' . $products[$i]['id']), HTML::button(null, 'fas fa-trash',null, null, $remove_product)) . '&nbsp;&nbsp;&nbsp;';


              $test = 'remove_product' . $products[$i]['id'];
              $trash .= '<script>
    var $button = $(\'#'. $test . '\')
    $(function() {
      $button.click(function () {
        $(\'form\').submit(function () {
          if (!window.confirm(\'Are you sure?\')) return false
        })
      })
    })
    </script>         
    ';
    }
?>
</form>

1 Ответ

0 голосов
/ 23 января 2020

Прежде всего, проблема в том, что любая нажатая кнопка вызывает события столько раз, сколько имеется кнопок в элементе sub DOM. Итак, что вам нужно сделать, чтобы получить точный элемент, который вызывает событие:

//with message
$product_id = 'remove_product' . $products[$i]['id'];
$remove_product = ['params' => 'id="'. $product_id .'"'];
$trash = HTML::link($this->link(null, 'Cart&Delete&products_id=' . $products[$i]['id']), HTML::button(null, 'fas fa-trash',null, null, $remove_product)) . '&nbsp;&nbsp;&nbsp;';


$but_id = $product_id;
echo "<script>
    var button = $('#". $but_id . "');
    $(document).on('click', button, function (event) {
        console.log('button clicked');
        //$('form').submit(function () {
          //if (!window.confirm('Are you sure?')) return false;
        //})
    })
    </script>         
    ";

$(document).on('click', 'button', function(e){
   alert(this.id);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form>
    <button id="product_delete1" data-id="1">Delete</button>
    <button id="product_delete2" data-id="2">Delete</button>
    <button id="product_delete3" data-id="3">Delete</button>
</form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...