簡體   English   中英

ASP.NET 中的 OnClientClick 事件

[英]OnClientClick event in In ASP.NET

我正在使用 ASP.NET 將值傳遞給 JavaScript 函數,但由於某種原因我無法確定,當我嘗試從另一個控件傳遞值時它不起作用。 相反,它表現得好像有一個語法錯誤,它只是提交回主表單。

有誰知道為什么?

例子:

<asp:TextBox ID="txtToSay" runat="server" Text="Something"></asp:TextBox>

<asp:Button runat="server" ID="btnSaySomething1" Text="Say Something"
OnClientClick="saySomething(<%=txtToSay.Text%>);"  /> <!-- doesn't work -->

<asp:Button runat="server" ID="btnSaySomething1" Text="Say Something"
OnClientClick="saySomething('<%=txtToSay.Text%>');"  /> <!-- doesn't work -->

<asp:Button runat="server" ID="btnSaySomething2" Text="Say Something"
OnClientClick="saySomething('Something');"  /> <!-- works -->

<script type="text/javascript">
    function saySomething(txt){
        alert(txt);
    };
</script>

附加信息:

在 .NET 4.0 上運行的 Web 應用程序語言:C#

更新:

使用一段時間后,我確定您不能在 ASP 控件中使用<%%>標記。 此外,如果您正在尋找控制值的動態評估 AVOID AVOID AVOID 使用<%=someControl.Text%>或類似的構造,因為它們只在請求提交到服務器后評估。 如果在運行時需要來自另一個控件的靜態值,只需在頁面加載事件中設置該值或在后面的代碼中以其他方式處理它。

Javacript will search for variable name = txtToSay.Text在 saySomething 函數調用中Javacript will search for variable name = txtToSay.Text ,在它周圍加上引號以使其成為字符串值

改變

OnClientClick="saySomething(<%=txtToSay.Text%>);" 

OnClientClick="saySomething('<%=txtToSay.Text%>');" 

你可以不通過這種方式獲得 txtToSay.Text

<script type="text/javascript">
    function saySomething(txt){
        alert(document.getElementById('<%=txtToSay.Text%>').value);
    };
</script>

您需要在saySomething()調用saySomething() '放在文本周圍。

像這樣:

    <asp:Button runat="server" ID="btnSaySomething1" Text="Say Something" OnClientClick="saySomething('<%=txtToSay.Text%>');"  />

更新

<%= %>在 asp.net 控件中不起作用。 您可以從代碼隱藏中設置它嗎?

IE

btnSaySomething1.OnClientClick = "Text to say"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM