如题,本人用JQUERY做表单验证非空,密码文本框修改ID名字后无法验证,我用下载DEMO在VS2005中测试,都很好正常,但我想用到我的程序里,也需要非空字段验证,我把文本框的名字由
          <asp:TextBox ID="password1" runat="server"></asp:TextBox><td><div id="password1Tip" style="width:250px"></div></td>改成TEXTBOX1后,把验证部分$("#TEXTBOX1").formValidator({onshow:"请输入密码",onfocus:"至少1个长度",oncorrect:"密码合法"}).inputValidator({min:1,empty:{leftempty:false,rightempty:false,emptyerror:"密码两边不能有空符号"},onerror:"密码不能为空,请确认"});验证密码字段非空就不起作用了,我查了整个JS包和页面没有别的地方引用这个ID了,但就是不能改名字,改了 password1后就不能验证了,刚刚用JQUERY,请大家帮个忙!!我要是想再自己的程序了用,该怎么改啊?!

解决方案 »

  1.   

    感觉我的验证和你相差好大啊<table>
    <tr style="height: 70px; vertical-align: top;">
        <td>
            <asp:TextBox runat="server" ID="txt_LoginName" CssClass="inputText" Width="280px"
                Height="23" AutoCompleteType="Disabled"></asp:TextBox>
        </td>
        <td style="padding-left: 10px;">
            <asp:RequiredFieldValidator CssClass="validate" ID="RequiredFieldValidator1" ErrorMessage="請輸入用戶名稱."
                ControlToValidate="txt_LoginName" runat="server" />
        </td>
    </tr>
    <tr style="height: 40px; vertical-align: top;">
        <td align="center">
            <asp:TextBox runat="server" ID="txt_Password" Width="280px" Height="23" CssClass="inputText"
                TextMode="Password" AutoCompleteType="Disabled"></asp:TextBox>
        </td>
        <td style="padding-left: 10px;">
            <asp:RequiredFieldValidator ID="RequiredFieldValidator2" CssClass="validate" ErrorMessage="請輸入密碼."
                ControlToValidate="txt_Password" runat="server" />
        </td>
    </tr>
    </table>
      

  2.   

    $("#TEXTBOX1")
    =>
    $("#<%=TEXTBOX1.ClientID%>")
      

  3.   

    带runat=Server的textbox,$("#TEXTBOX1")是找不到它的id的
    以下为引用内容:
    ClientID由 ASP.NET 生成的服务器控件标识符。
    有时,不能为控件分配唯一的名称。例如,如果 Repeater 控件在它的某个模板中包含一个 Label 控件,则为 Repeater 控件中的各个项呈现该 Label 控件的一个实例。在呈现控件的多个实例时,为防止出现命名冲突,ASP.NET 为页上的各个服务器控件自动生成一个唯一的 ClientID 值。ClientID 值是通过连接控件的 ID 值和它的父控件的 UniqueID 值生成的。如果未指定控件的 ID 值,则使用自动生成的值。生成的 ID 的各个部分以下划线字符 (_) 分隔。
      

  4.   

    我试了,改成$("#<%=TEXTBOX1.ClientID%>") 可以得到ID值,但还是无法验证,<div id="password1Tip" style="width:250px">里的提示都没有了
      

  5.   

    <div id="password1Tip" 
    =>
    <div id="<%=TEXTBOX1.ClientID%>Tip" 
      

  6.   

    弄好了,谢谢大家,就是这个Tip的问题,没用过这个<div>里的tip,难道他默认的格式就是文本框的ID名字+Tip吗,我试验了一下,看来是这样的,验证通过了!不明白是什么原理,哪位能给解释说明一下?
      

  7.   


    #3不是说了,runat控件放到母版或者repeater这种控件里面id已经被修改过了,你要一一修改对应关系要不就改为客户端控件,用一个int类型的全局变量来生成唯一id
    public int id=0;   <input id="password<%=id%>" name="password<%=id%>"><td><div id="password<%=id++%>Tip" style="width:250px"></div></td>
      

  8.   

    是CoC 原则,约定优于配置
    Tip是提示,那如何知道是针对那个的提示呢  就是相应元素的ID当前缀
      

  9.   


    #3不是说了,runat控件放到母版或者repeater这种控件里面id已经被修改过了,你要一一修改对应关系要不就改为客户端控件,用一个int类型的全局变量来生成唯一id
    public int id=0;   <input id="password<%=id%>" name="password<%=id%>"><td><div id="password<%=id++%>Tip" style="width:250px"></div></td>
    你这回答完全不靠谱啊
      

  10.   


    #3不是说了,runat控件放到母版或者repeater这种控件里面id已经被修改过了,你要一一修改对应关系要不就改为客户端控件,用一个int类型的全局变量来生成唯一id
    public int id=0;   <input id="password<%=id%>" name="password<%=id%>"><td><div id="password<%=id++%>Tip" style="width:250px"></div></td>
    你这回答完全不靠谱啊还好吧,放在repeater这种会修改runat控件id的我都是用客户端控件+public变量生成唯一id,然后自己js处理下事件绑定除了数据绑定的repeater控件,基本就没用asp.net自带的其他控件鸟
      

  11.   

    我没用<%=TEXTBOX1.ClientID%>,仍然用的是TEXTBOX1,这样写是没问题的,浏览器自动转换成了INPUT名字也可以得到,8楼哥们说的在理!