jQuery еднакви стойности при submit

Post Reply
redbulldog
Нов
Нов
Posts: 53
Joined: Tue Apr 20, 2010 12:11 pm

jQuery еднакви стойности при submit

Post by redbulldog » Tue Mar 13, 2018 9:58 pm

Здравейте. Изправям се пред голям проблем, тъй като не пиша на Java Script, а ми се налага да направя нещо малко, което обаче ми скъса нервите. Моля Ви някой ако има идея как да оправя нещата ще съм много благодарен за помощ.

Имам една таблица с неопределен брой редове за която се генерират автоматично бутони

[html]<button type="button" class="btn btn-pid btn-sm btn-kv btn-default btn-outline-secondary" title="Make primary" data-key="16">P</button>[/html]

Като за всеки ред на data-key се слага за стойност съответното ID.


[js]$(document).ready(function () {
$(function() {
$('.btn-pid').click(function() {
var pid = $(".btn-pid").attr('data-key');
$.post('/pages/default/photo/'+pid,
function(response,status){
alert("Response : " + response+"\n\n Status : " + status+" ID:"+pid);.
});
});
});
});[/js]

Идеята е като се кликне на даден ред тази стойност 16 (например) да се събмитне към URL, написан горе и ID-то се лепва отзад, като POST заявката е без нищо. Просто празна заявка към въпросният адрес с индекс накрая.

Проблема е обаче, че изпраща само първото ID. И винаги независимо къде се клика надолу, то винаги изпратеното ID е първото.

Например ако имам

[html]<button type="button" class="btn btn-pid btn-sm btn-kv btn-default btn-outline-secondary" title="Make primary" data-key="16">P</button>
<button type="button" class="btn btn-pid btn-sm btn-kv btn-default btn-outline-secondary" title="Make primary" data-key="17">P</button>
<button type="button" class="btn btn-pid btn-sm btn-kv btn-default btn-outline-secondary" title="Make primary" data-key="18">P</button>
[/html]

то винаги това, което получава js е 16.

Нямам представа къде бъркам.

Fakeheal
Гуру
Гуру
Posts: 2701
Joined: Sat Apr 17, 2010 6:37 am
Answers: 351
Location: /r/eyebleach
Contact:

Post by Fakeheal » Wed Mar 14, 2018 8:46 am

Проблема ти е в този ред:

Code: Select all

var pid = $&#40;".btn-pid"&#41;.attr&#40;'data-key'&#41;;
Трябва да използваш $(this), за да вземеш атрибута data-key на бутона, който СИ КЛИКНАЛ. По твоя начин взима първия бутон в ДОМ дървото, което е с този клас.

Също така може да ползваш .data().

Code: Select all

$&#40;document&#41;.ready&#40;function&#40;&#41; &#123;
  $&#40;function&#40;&#41; &#123;
    $&#40;'.btn-pid'&#41;.click&#40;function&#40;&#41; &#123;
      var pid = $&#40;this&#41;.data&#40;'key'&#41;;
      $.post&#40;'/pages/default/photo/' + pid, function&#40;response, status&#41; &#123;
        alert&#40;"Response &#58; " + response + "\n\n Status &#58; " + status + " ID&#58;" + pid&#41;;.
      &#125;&#41;;
    &#125;&#41;;
  &#125;&#41;;
&#125;&#41;;

redbulldog
Нов
Нов
Posts: 53
Joined: Tue Apr 20, 2010 12:11 pm

Post by redbulldog » Wed Mar 14, 2018 9:04 am

Много блаодаря!!! Спасихте ми живота :)

Post Reply