jquery代码在aspx中不起作用

时间:2017-02-01 22:03:02

标签: javascript jquery asp.net

我正在尝试一个文本框,当用户在文本框中键入时,下面的标签会显示使用jquery剩余的字符数。

当我在常规html页面中尝试下面的jquery代码时,它按预期工作..但是当我尝试在我的aspx页面中执行它时它不会更新标签。

我是jquery的初学者所以我不确定我是否在这里遗漏了一些东西..有人可以指导我朝正确的方向发展..

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPageToolkitScriptManager.master" AutoEventWireup="true" CodeFile="test.aspx.cs" Inherits="DotNet_test" %>

<%@ Register TagPrefix="uc" TagName="WebUserControl" 
    Src="~/Controls/WebUserControl.ascx" %>

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolderHead" Runat="Server">
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolderBody" Runat="Server">

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>


<script type="text/javascript">
    $(document).ready(function () {

        $('<%= inp1.ClientID %>').keyup(function () {
            var x = $('<%= inp1.ClientID %>').val().length;
            //alert(x);
            var y = 10;
            $('<%= p1.ClientID %>').text("Len balance : " + (y - x));

            if ((y - x) < 0) {
                $('<%= p1.ClientID %>').html("too much");
                $('<%= inp1.ClientID %>').val($('<%= inp1.ClientID %>').val().substring(0, 10));
            }

        });

    });
 </script>

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

    <asp:Label ID="p1" runat="server" Text=""></asp:Label>

<%--<input id="inp1">
<button id="b1">Click</button>
<p id="p1"></p>--%>


    </asp:Content>

1 个答案:

答案 0 :(得分:1)

考虑一个普通的基于jQuery ID的选择器:

$("#myElementID");

现在,看看你的选择器:

$('<%= inp1.ClientID %>')

您已经丢失了#,这告诉jQuery您正在寻找 ID 而不是节点类型 。因此,你的选择者找不到任何东西。

更改您的选择器以包含#,如下所示:

$('#<%= inp1.ClientID %>')

你应该全力以赴!

替代回答:

看看这个文本框:

<asp:Textbox runat="server" id="MyTextbox" ClientIDMode="static"></asp:Textbox>

注意我是如何添加ClientIDMode="static"的。这告诉ASP在不改变ID的情况下呈现控件 。这意味着您只需在jQuery中使用选择器$("#MyTextbox"),它就会找到文本框。

注意: 在重复容器(如GridViews或Repeater)中的元素上使用它。由于ID必须是唯一的,如果您要复制此文本框,则需要ID不同。在这种情况下,请考虑使用ClientIDMode="predictable",而是为您的ID添加索引,例如MyTextbox1MyTextbox2等。