2014-12-18 59 views
3

例如,有這樣的JS代碼:如何在點擊時獲取所需的輸入值?

功能openAlbum(){ $( 「#軌道」)HTML( '一些文本......'); var uid = $(「#uid」)。val();

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

和被顯示在一個週期此HTML/PHP的代碼:

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>'; 
} 

問題:目前通過點擊抓鬥僅id爲頁面上的第一輸入值=」 UID」。

如何從div中點擊一個鏈接的JS var uid值?

P.S.對不起,我的英語不好。

+1

'id's必須是唯一的。這可能是問題的一部分。 – imtheman

+0

最好不要使用onclick,而是添加一個事件偵聽器,該事件偵聽器將在單擊封面div的任何實例時觸發。然後你可以用'this'來獲得價值。 – Collierre

+0

我不完全明白你想要做什麼,所以我目前沒有完全支持這些表格,但我會信任你!看看我給它的答案應該給你一點。 –

回答

1

我會改變你還挺這樣做有點的方式......

<?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 
    } 
?> 

腳本:

$(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); 
      } 
    }); 
} 

這應該面面俱到。我將所有的ids切換到類,並改變了你如何執行你的jQuery。

+0

讓我知道如果偶然的功能不起作用。除非您在多個地方使用該功能,否則以這種方式使用它是有點浪費的。我真的將它創建爲'$(document)。(...,...,function(){...});' –

+0

非常感謝! 這部分解決了我的問題,但同時又有新的。 點擊後,我們將數據發送到頁面s.php,處理它們並顯示在div中 - 此div可以任意刷新。最多幾次:( – Kruazzan

+0

@Kruazzan你可以更具體一點,我改變了'#results'(假設)div內容被替換的部分,看看[html()](http://api.jquery。 com/html /) –

0

謝謝大家的幫忙!因此,我將能夠解決這個問題。

JS代碼:

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代碼:

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

好吧,看起來你在這裏添加了一個更有意義的答案,在這種情況下,只需要刪除第一個'.html'就沒有必要了,你真的只想在'success'中改變它大多數情況下,或者你可以添加一個失敗子句,但是這看起來總體上很好,如果你期望它們重複,STILL應該把你的ID改爲類。應該讓它成爲一個班級。 –

0

由於ID在HTML中必須是唯一的,它是隻取第一個元素的值。如Cayce K已回答的,使ID爲唯一或使用class屬性。

相關問題