How to grab the required value input when clicked?

For example, there is a JS code like this:

openAlbum () {$ ("# tracks") function. html ('Some text ...'); var uid = $ ("# uid"). val ();

   $.ajax({
            type: "POST",
            url: "s.php",
            data: "uid="+uid,
            success: function(html) {
                    $("#results").empty();
                    $("#results").append(html);
            }
    }); }

      

And this html / php code that displays in the loop:

for ($i = 0; $i < count($searchAlbum); $i++) {
echo '<div id="cover"><form action=""><input type="hidden" id="uid" value="'.str_replace('https://example.com/', '', $searchAlbum[$i]->href).'"/><a href="#" onclick="openAlbum();"><img src="'.$searchAlbum[$i]->images[1]->url.'"/></a><br><br><span>'.$searchAlbum[$i]->name.'</span><input type="submit" style="position: absolute;;left: -99999px;" /></form></div>';
}

      

Problem: Currently, clicking only captures the first input value on the page with id = "uid".

How to put JS var uid value from div that clicked the link?

PS Sorry for my bad english.

+3


source to share


3 answers


I'm going to change the way you do it a bit ...

<?php
    for ($i = 0; $i < count($searchAlbum); $i++) {
?>
         <div class="cover">
               <form action="">
                   <input type="hidden" class="uid" value="<?php echo str_replace('https://example.com/', '', $searchAlbum[$i]->href); ?>"/>
                  <img src="<?php echo $searchAlbum[$i]->images[1]->url; ?>"/>
                  <span><?php echo $searchAlbum[$i]->name; ?></span>
                  <input type="submit" style="position: absolute;left: -99999px;" />
               </form>
         </div>';
<?php
    }
?>

      

Script:



$(document).on('click','.cover img',openAlbum);
function openAlbum() { 
   $("#tracks").html('Some text...'); var uid = $(this).parent().find('.uid').val();

   $.ajax({
            type: "POST",
            url: "s.php",
            data: "uid="+uid,
            success: function(html) {
                    //$("#results").empty();
                    //$("#results").append(html);
                      $("#results").html(html);
            }
    }); 
}

      

This should cover everything. I switched all ids to classes and changed the way jQuery is executed.

+1


source


Thanks everyone for your help! As a result, I can solve the problem.

JS code:

function openAlbum(uid)
{
$("#results").html('Some text...');

       $.ajax({
                type: "POST",
                url: "s.php",
                data: "uid="+uid,
                success: function(html) {
                        $("#results").empty();
                        $("#results").append(html);
                }
        });

}

      



HTML code:

for ($i = 0; $i < count($searchAlbum); $i++) {
?>
<div id="cover"><a href="#" onclick='openAlbum("<? echo $searchAlbum[$i]->id; ?>");'><img src="<? echo $searchAlbum[$i]->images[1]->url; ?>"/></a><br><br><span><? echo $searchAlbum[$i]->name; ?></span></div>
<?
}

      

0


source


Since id in HTML must be unique, it only accepts the first value of the element. Make IDs unique or use a class attribute as Casey K. answered.

0


source







All Articles