2017-09-11 47 views
0

我已經使用了一個asp.net轉發器來重複圖像。爲什麼jquery不能獲得輸入值?

我想從數據庫返回的主鍵ID在通過jQuery點擊圖像時顯示,但它顯示未定義。我將圖像存儲在輸入文本字段中,並且它正在顯示,但未顯示警報。

的jQuery:

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

中繼器:

<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

'find('input [id $ = txtID]')'=>'find('input [id = txtID]')'有幫助嗎? – JaxCze

回答

1

this不不指調用的點擊事件處理元件,它是指window對象。您可以使用.call()設置上下文

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

,並在腳本中,您需要使用.prev()爲文本框不是ImageButton

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

你是一個傳奇。謝謝 – Stacky

0

子元素,你可以簡單地說:

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

$('input[id="txtID"]')會找到元素<input type="text" id="txtID" value='whatYouAreTryingToFind' />併爲它創建一個jQuery選擇器。

提示: 在jQuery中,對於事件的範圍$(this)可能很有趣,因此請務必確認它返回的內容是什麼Scope and this in JavaScript

相關問題