【问题标题】:How to pass textbox client ID to JavaScript function如何将文本框客户端 ID 传递给 JavaScript 函数
【发布时间】:2019-09-13 13:03:05
【问题描述】:

我有一个 JS 函数来进行文本框操作。当我发送文本框客户端 ID 时,我收到此语法错误:

JavaScript 运行时错误:语法错误,无法识别的表达式:#

如何解决此错误?我对 JavaScript 很陌生。无论我尝试什么,我都找不到解决方案。请帮忙。

function SearchText(clientID) {
    console.log("#" + clientID);
    var availableTags = ["gmail.com", "hotmail.com", "mynet.com", "yahoo.com", "outlook.com", "windowslive.com"];
    $("#"+clientID).autocomplete({
        source: availableTags,
        matchCase: false,
        focus: function (event, ui) {
            var oldValue = $("#" + clientID).val();
            var value = oldValue + ui.item.value;
            event.preventDefault();
            $("#" + clientID).val(value);
        },

        select: function (event, ui) {
            var oldValue = $("#" + clientID).val();
            var value = oldValue + ui.item.value;
            $("#" + clientID).val(oldValue);
            event.preventDefault();
        },

        minLength: 0
    });
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl1.ascx.cs" Inherits="TextBoxControl.WebUserControl1" %>

<link href="/Script/jquery-ui.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript" src="jquery-1.8.3.js"></script>
    <script type="text/javascript" src="jquery-ui-1.8.24.js"></script>>
    <script type="text/javascript" src="../common.js"></script>>
<div>   
<asp:Textbox runat="server" ID="txtEposta" MaxLength="100" Width="250px" onKeyPress="javascript:SearchText('<%=txtEposta.ClientID%>');"                  
    ControlType="AlpfaNumericAndSymbols" AllowSpaces="False" Visible="true"></asp:Textbox>

</div>

【问题讨论】:

    标签: javascript jquery html asp.net webforms


    【解决方案1】:

    您可以简单地将txtEposta.ClientID 替换为this

    <asp:Textbox runat="server" ID="txtEposta" onKeyPress="javascript:SearchText(this);"
    
    <script>
        function SearchText(element) {
            alert(element.id);
        }
    </script>
    

    如果您真的想使用 ClientID,则必须以编程方式添加它

    <asp:TextBox runat="server" ID="txtEposta"></asp:TextBox>
    
    <script>
        function SearchText(element) {
            alert(element);
        }
    </script>
    

    然后在Page_Load

    txtEposta.Attributes.Add("onKeyPress", string.Format("javascript:SearchText('{0}');", txtEposta.ClientID));
    

    【讨论】:

      【解决方案2】:

      将文本框中的属性ClientIDMode 设置为Static。这将使 ClientID 与服务器端的 id 相同。不要忘记更改 onKeyPress 参数。

      <asp:Textbox runat="server" ID="txtEposta" ClientIDMode="Statis" MaxLength="100" Width="250px" onKeyPress="javascript:SearchText('txtEposta');"                  
      ControlType="AlpfaNumericAndSymbols" AllowSpaces="False" Visible="true"></asp:Textbox>
      

      【讨论】:

        猜你喜欢
        • 2011-09-14
        • 1970-01-01
        • 1970-01-01
        • 2018-05-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-14
        相关资源
        最近更新 更多