Как добавить много HTML-кнопок, которые используют один и тот же JavaScript в результатах цикла? - PullRequest
0 голосов
/ 18 сентября 2018

На моей html-странице есть следующие коды:

<input type="text" class="woocommerce-Input woocommerce-Input--text input-text" name="metin" placeholder="Geben Sie Artikel Nr" style="width: 30%;"/><br/><br/>
<input type="button" class="single_add_to_cart_button button alt" value="Suche (Advanced)" onclick="search()" /><br/><br/>
<div class="cevap" style="background-color:#e6e6e6; border: 0px solid green; padding: 2px; margin: 0px;"><i class="fa fa-spinner fa-spin fa-2x"></i></div>

и между <head> ... </head>:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
   <script>
      function search() {
         metin = $('input[name="metin"]').val();
         $.post('/wp-content/plugins/ajax-test/SearchByNumberNew.php', {yazi: metin}, function (gelen_cevap) {
            $('.cevap').html(gelen_cevap);
         });
      }
</script>

Я отправляю yazi в SearchByNumberNew.php и через некоторое времяпроцессы внутри него я получаю результаты в <div class="cevap"...

Пока здесь все в порядке.Я пытаюсь поместить несколько кнопок рядом с каждым результатом в <div>, которые снова отправляют соответствующее значение ($parcano) в SearchByNumberNew.php.Поэтому я хочу сделать новый поиск с новым значением и заполнить <div> новыми результатами (конечно, после удаления предыдущих результатов).

, чтобы сделать это, я добавил следующий код в цикл вSearchByNumberNew.php:

...
?><input type="hidden" name="metin" value="<?php echo $parcano;?>"/><br/><br/>
   <input type="button" class="single_add_to_cart_button button alt" value="Suche (Basic)" onclick="searchin()" /><br/><br/>
   <?php
...

и следующий код между <head> ... </head>:

  function searchin() {
     metin = $('input[name="metin"]').val();
     $.post('/wp-content/plugins/ajax-test/SearchByNumberNew.php', {yazi2: metin}, function (gelen_cevap) {
        $('.cevap').html(gelen_cevap);
     });
  }

Я пробовал много вариантов: yazi, yazi2, metin, metin2 и т. Д. ..., отключаязначения перед циклом и т.д ...

При первом поиске, когда я ввожу значение в поле ввода, всегда все в порядке.Я получаю список результатов с множеством кнопок для каждой строки результатов.

Насколько я вижу в кодах кнопок на странице, все они имеют правильные значения.

Но когда ящелкните любую из них, они всегда отправляют первое значение кнопки в мой файл php.

Что я делаю не так?

Буду признателен за помощь,

С уважениемМурат

Ответы [ 3 ]

0 голосов
/ 18 сентября 2018

Вы пытались запустить свой блок jQuery?

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script>
     (function($) {
          function search() {
            var metin = $('input[name="metin"]').val();
             $.post('/wp-content/plugins/ajax-test/SearchByNumberNew.php', {yazi: metin}, function (gelen_cevap) {
                $('.cevap').html(gelen_cevap);
             });
          }
     })( jQuery );
    </script>
0 голосов
/ 18 сентября 2018

Насколько я вижу ваш код, я не вижу, где вы используете значение кнопки.Вместо этого вы используете значение поля ввода.Если вы используете значение $ ('input [name = "metin"]'). Val (), тогда jquery будет искать поле ввода в верхней части страницы и вернет вам первый соответствующий результат.Так что это всегда даст первый результат.

Есть несколько способов решить вашу проблему.Вы можете передать этот параметр в событие кнопки onClick, а в качестве значения кнопки вы можете указать ссылку на ввод, значение которого вы хотите получить из

<input type="button" class="single_add_to_cart_button button alt" value="metin1" onclick="searchin(this)" />

  function searchin(param) {
     metin = $('input[name="+ param.val() + "]').val();
     $.post('/wp-content/plugins/ajax-test/SearchByNumberNew.php', {yazi2: metin}, function (gelen_cevap) {
        $('.cevap').html(gelen_cevap);
     });
  }

Или второй способ - привязать событие jquery к кнопке.

$('.single_add_to_cart_button').click(function(){
     metin = $('input[name="+ this.val() + "]').val();
})

Насколько я понял ваш вопрос.Я думаю, что таким образом вы можете достичь своей цели.В противном случае, дайте мне знать, если есть какие-либо вопросы.

0 голосов
/ 18 сентября 2018

Проблема в том, что вы используете неправильный идентификатор $('input[name="metin"]').val(); всегда будет возвращать значение последнего ввода с именем metin, попробуйте сгруппировать каждую группу ввода в div и вместо:

$('input[name="metin"]').val();

используйте это, если вы хотите использовать значение входа

$(this).parent().find('input[name="metin"]').val();

и это, если вы хотите использовать значение кнопки

$(this).val();

PHP-код должен выглядеть примерно так:

...
?> 
<div>
   <input type="button" class="single_add_to_cart_button button alt" value="Suche (Basic)" onclick="searchin()" /><br/><br/>
</div>
   <?php
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...