我正在做一个ASP.Net应用程序,我需要在TextBox中使用手机屏蔽输入。我正在使用jQuery,但它无法正常工作。
Asp.net:
<asp:TextBox runat="server" ID="txtCelular" CssClass="w240 placeholder"></asp:TextBox>
的javascript:
<script src="\scripts\jquery-1.7.2.js" type="text/javascript"></script>
<script type="text/javascript">
$("#txtCelular").mask("(999) 9999-9999?9");
$("#txtCelular").on("blur", function () {
var last = $(this).val().substr($(this).val().indexOf("-") + 1);
if (last.length == 5) {
var move = $(this).val().substr($(this).val().indexOf("-") + 1, 1);
var lastfour = last.substr(1, 4);
var first = $(this).val().substr(0, 9);
$(this).val(first + move + '-' + lastfour);
}
});
</script>
答案 0 :(得分:2)
您必须记住,默认情况下,您在服务器上的元素上指定的ID不是客户端上使用的ID。并且由于JavaScript在客户端上运行,因此由于ID不匹配而无法获得正确的元素。你有很多选择。当新的Web窗体开发人员开始使用母版页,模板化控件或用户控件(.ascx)时,这通常会让他们兴奋不已。
您可以更改元素的ClientIdMode(这也可以在页面或web.config级别完成。)
<asp:TextBox runat="server" ID="txtCelular" ClientIdMode="static" CssClass="w240 placeholder" />
只要您的JavaScript直接位于Web窗体页面或控件中,您就可以在JavaScript中嵌入客户端ID。
$("#<%= txtCelular.ClientId %>").mask("(999) 9999-9999?9");
或者在某些情况下(这是一个很好的候选人),课程更有意义。
<asp:TextBox runat="server" ID="txtCelular" CssClass="w240 placeholder phonemask" />
$(".phonemask").mask("(999) 9999-9999?9");