我有一个JQuery日期掩码,但是当我运行该页面时会抛出错误“Microsoft JScript运行时错误:对象不支持此属性或方法”。
现在,这个特定JQuery的工作控件将动态添加到转发器控件中。通过这个,我查看了控件的ID,它在Visual Studio中打破和停止,以及在aspx页面上显示的内容。除了JQuery在开始时具有的“#”之外,它们是相同的,不在页面上。
在我的JQuery代码中,我有:
JQuery(function($){
$('#<%=date.ClientID %>').mask("99/99/9999");
});
在找到控件时,有没有告诉JQuery不要包含“#”?我使用了UniqueID但是这会将任何下划线更改为“$”,这与页面上的内容不同。我唯一的问题是在ID的开头加上“#”符号。
有人可以帮忙吗?
由于
答案 0 :(得分:2)
<asp:TextBox ID="date" runat="server"></asp:TextBox>
<script type="text/javascript">
alert($('#<%=date.ClientID %>').attr('id'));
</script>
此代码会提醒正确的ID,因此“#”不是问题。检查mask()是否是有效函数,以及代码是否在文本框位于页面之前运行。尝试:
$(document).ready(function(){$('#<%=date.ClientID %>').mask("99/99/9999");})
注意:<%=
ServerSideCode %>
块必须在aspx页面上,它在.js文件中不起作用!
或者您可以添加Ives建议的类名,然后不需要服务器端代码。
答案 1 :(得分:1)
也许你忘了包含掩码库。
<script src="jquery.maskedinput.js" type="text/javascript"></script>
为了简化操作,您可以为控件添加一个类(class =“datemasked”),然后使用以下命令使其工作:
$('.datemasked').mask("99/99/9999");
});
答案 2 :(得分:0)
尝试拆分代码并使用Firebug进行调试。 如果你写:
var element = $('#<%=date.ClientID %>');
$(element).mask("99/99/9999");
然后逐步执行代码,您至少可以查看是否找到了该元素。您还可以列出对象上的所有可用方法,以查看掩码功能是否可用。
正如艾夫斯所说,请确保包含该库。
编辑: 从我收集到的,你的主要问题是你正在混合C#和JavaScript。 &lt;%date.ClientID%&gt;只在C#中有意义,所以你需要以某种方式将它作为参数发送给设置JavaScript的函数。
如Ives所描述的更好的解决方案是在元素上使用CssClass,然后在jQuery选择器中使用$('。classname')。这假设您只有一个元素实例,这可能不是您的情况。