我正在尝试一个文本框,当用户在文本框中键入时,下面的标签会显示使用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>
答案 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添加索引,例如MyTextbox1
,MyTextbox2
等。