2013-10-08 58 views
1

這是我的.aspx頁面中的代碼,我使用自動完成的文本框。從代碼中的輸入框中獲取值

<script type="text/javascript"> 
    $(document).ready(function() { 
     SearchText(); 
    }); 
    function SearchText() { 
     $(".autosuggest").autocomplete({ 
      source: function (request, response) { 
       $.ajax({ 
        type: "POST", 
        contentType: "application/json; charset=utf-8", 
        url: "Preferences.aspx/GetAutoCompleteData", 
        data: "{'Name':'" + document.getElementById('txtSearch').value + "'}", 
        dataType: "json", 
        success: function (data) { 
         response(data.d); 
        }, 
        error: function (result) { 
         alert("Error"); 
        } 
       }); 
      } 
     }); 
    } 
</script> 


<table style="width:auto"> 
    <tr> 
     <td> 
      <asp:Label ID="Label1" runat="server" Text="Please Type Student Name:"></asp:Label> 
     </td> 
     <td> 
      <input type="text" id="txtSearch" class="autosuggest" /> 
      <asp:TextBox ID="TextBox1" runat="server" Text=txtsearch Visible="true" class="autosuggest"></asp:TextBox> 
     </td> 
     <td> 
      <asp:Button ID="btnAdd" runat="server" Text="Add" OnClick="btnAdd_Click" /> 
     </td> 
    </tr> 
</table> 

如果我在

<input type="text" id="txtSearch" class="autosuggest" /> 

把RUNAT = 「服務器」,然後自動完成不工作。表單標籤用於主頁面。

問題使用控件的名稱屬性解決

源代碼:

<input type="text" name="_name" /> 

    <asp:Button ID="btnShow" runat="server" Text="Show" onclick="btnShow_Click" /> 

代碼隱藏:

protected void btnShow_Click(object sender, EventArgs e) 
{ 
    string strValue = Page.Request.Form["_name"].ToString(); 
    Response.Write(strValue); 
} 

參考:http://www.etechpulse.com/2013/02/get-html-input-controls-value-server.html

謝謝你們的幫助。

+0

你想在頁面加載中調整它嗎?並檢查控制檯是否有任何錯誤? –

+0

您正在執行ajax操作。這不會重新呈現整個頁面。您需要將響應值加載到控件。 – Kami

回答

2

如果您使用MasterPage,則ASP.net將自動爲每個控件生成一個名稱並將其附加到您的控件中。爲了獲得控件的唯一ID,您需要使用JQuery ClientID。

runat="server"但改變你的jQuery功能(這將檢索由客戶端ID輸入):

function SearchText() { 
     $("#<%=txtSearch.ClientID%>").autocomplete({ 

或者作爲替代(由DeeMac建議)使用靜態ClientIDMode

+0

這也是一個可行的替代方案,使用靜態ClientIDMode http://msdn.microsoft.com/en-us/library/system.web.ui.control.clientidmode.aspx –

+0

謝謝@DeeMac將我的答案添加到: ) – Zaki

+0

+1。我相信這是你的解決方案OP。 –

0

要獲取價值表單文本框,您需要使用服務器控件。

<asp:TextBox ID="txtSearch" runat="server" ></asp:TextBox> 

你也可以添加的ClientIDMode =「靜態」在服務器控件保留您的ID完全一樣,或者你可以使用$("#<%=txtSearch.ClientID%>")得到dynamicaly生成的ID。

+0

我無法使用服務器控件來處理class =「autosuggest」。 – user2345661