2014-01-20 34 views
2

ASP.NET自动生成一个ID,而不是使用我分配的ID。我将如何使用jQuery选择此值?我不相信自动生成的值始终是相同的。使用JQuery选择自动生成的WebForm控件ID

这是我的ASPX代码:

<asp:TextBox ID="txtZip" runat="server" CausesValidation="true" CssClass="short_width" MaxLength="10" /> 

这里是产生什么:

<input name="ctl00$MainContentArea$txtZip" type="text" maxlength="10" id="ctl00_MainContentArea_txtZip" class="short_width" /> 

这里就是我想要做:

<script type="text/javascript"> 
    jQuery(function ($) { 
     $("#txtZip").mask("99999?-9999"); 
    }); 
</script> 

回答

4

如果您的JavaScript是在aspx页面,您可以使用ClientId。不管怎样,你必须像在其他答案中一样使用类。

<script type="text/javascript"> 
    jQuery(function ($) { 
     $("#<%=txtZip.ClientId%>").mask("99999?-9999"); 
    }); 
</script> 
+0

我完全忘了在网络形式,或者我会将它添加到我的答案。 +1。 :) – hutchonoid

+1

@hutchonoid我尽量忘记每天的网络形式。 – Jack

+0

如果您使用的是ASP.NET 4或更高版本,也许尝试使用ClientIDMode =“Static” – sh1rts

4

可以使用类选择器:

jQuery(function ($) { 
    $(".short_width").mask("99999?-9999"); 
}); 

我会创建一个新的类,即邮编并将其添加到您的控制:

<asp:TextBox ID="txtZip" runat="server" CausesValidation="true" CssClass="short_width zipCode" MaxLength="10" /> 

然后用这个:

jQuery(function ($) { 
    $(".zipCode").mask("99999?-9999"); 
}); 

它保持它从其他样式分开的方式。

+0

不幸的是,我在屏幕上使用了其他的.short_width样式控件,它们不需要蒙版。 –

+1

很好的答案。你会发现.NET想要控制所有的元素ID。您最好使用类名来代替。您可以使用唯一的类名称:CssClass =“short_width zipcode” –

+1

我已更新它,我只是在发布评论时添加了它。 @Diodeus伟大的思想家都认为。 :) – hutchonoid

0

.NET 4.5对控制ClientIDMode属性,如果你把它设置为静态,则控件的ID不会从你分配给它,它会留为txtZip改变。