2017-09-11 3 views
0

Ich habe einen asp.net Repeater verwendet, um Bilder zu wiederholen.Warum erhält jquery keinen Eingabewert?

Ich möchte die Primärschlüssel-ID erhalten aus der Datenbank beim Klicken auf das Bild über jquery, aber es zeigt undefined. Ich speichere das Bild im Eingabefeld und es wird angezeigt, aber nicht in der Warnung.

jQuery:

function displayStory() { 
    var txtIDValue = $(this).find('input[id$=txtID]').val(); 
    var id = txtIDValue; 
    alert(id); 
} 

Repeater:

<asp:Repeater ID="rptrImages" runat="server"> 
    <ItemTemplate>  
     <div class="col-md-4"> 
      <div class="thumbnail"> 
       <input type="text" id="txtID" value='<%#Eval("ID")%>' /> 
       <asp:ImageButton ID="imgButtonStory" OnClientClick='displayStory();return false;' runat="server" ImageUrl='<%# "UploadedImages/"+ Eval("Image") %>' 
       CssClass="img-responsive img-rounded" /> 
      </div>  
     </div> 
    </ItemTemplate> 
</asp:Repeater> 
+0

'finden ('input [id $ = txtID]')' => 'finden ('input [id = txtID]')' hilft es? – JaxCze

Antwort

1

this nicht bezieht sich nicht auf das Element, das die Click-Ereignishandler aufgerufen wird, bezieht er sich auf window Objekt. Sie können .call() verwenden, um den Kontext

<asp:ImageButton ID="imgButtonStory" OnClientClick='displayStory.call(this);return false;' runat="server" ImageUrl='<%# "UploadedImages/"+ Eval("Image") %>' 
         CssClass="img-responsive img-rounded" /> 

und im Skript zu setzen, müssen Sie .prev() verwenden, wie das Textfeld Element der ImageButton

var txtIDValue= $(this).prev('input[id$=txtID]').val(); 
//var txtIDValue= $(this).closest('div').find('input[id$=txtID]').val(); 
+0

Sie sind eine Legende. Vielen Dank – Stacky

0

nicht Kind ist, kann man einfach sagen:

function displayStory() { 
    var txtIDValue = $('input[id="txtID"]').val(); 
    var id = txtIDValue; 
    alert(id); 
} 

$('input[id="txtID"]') finden Sie das Element <input type="text" id="txtID" value='whatYouAreTryingToFind' /> und erstellen Sie einen jQuery-Selektor dafür.

Tipp: In jQuery der Umfang der $(this) für Veranstaltungen kann interessant sein, also immer genau überprüfen, was es Scope and this in JavaScript zurückgibt.

Verwandte Themen