我正在尝试更改文本框的输入掩码,当复选框已经检查或未检查但是问题始终只是检查其他内容,甚至是复选框是否检查。
请建议解决这个问题。
这是我的代码:
<%@ Page Title="" Language="C#" MasterPageFile="~/Imam.Master" AutoEventWireup="true"
CodeBehind="WebForm4.aspx.cs" Inherits="Imam_Contacts.WebForm4" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
<script src="js/jquery-1.4.1.js" type="text/javascript"></script>
<script src="js/jquery.maskedinput-1.2.2.js" type="text/javascript"></script>
<script type="text/javascript">
if ($('#chkhtml:checked').size() > 0)
{
jQuery(function($) {
$("#txthtml").mask("999-99-9999");
});
} else {
jQuery(function($) {
$("#txthtml").mask("99/99/9999");
});
}
</script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<input id="chkhtml" type="checkbox" checked="checked" />
</asp:Content>
答案 0 :(得分:1)
<script type='text/javascript'>
$('#chkhtml').click(function(){
if ($(this).attr('checked'))
$("#txthtml").mask("999-99-9999");
else
$("#txthtml").mask("99/99/9999");
});
$(function(){
$("#txthtml").mask("99/99/9999"); // this is default mask
});
</script>
我猜你想要在复选框改变状态时更改掩码,但你不知道如何实现这一点。
答案 1 :(得分:0)
在呈现复选框之前,您的代码正在运行。因此,当代码运行时,没有复选框。
您需要将整个if
块包装在$(function() { ... })
中,这将在文档完成加载后执行函数中的代码。
例如:
$(function() {
if ($('#chkhtml:checked').length > 0) {
$("#txthtml").mask("999-99-9999");
} else {
$("#txthtml").mask("99/99/9999");
}
});
或者,您可以使用内联条件:
$(function() {
$("#txthtml").mask(
$('#chkhtml:checked').length > 0 ? "999-99-9999" : "99/99/9999"
);
});
答案 2 :(得分:0)
与其他答案一起,这是另一种方法......
<script type='text/javascript'>
$(document).ready(function() {
$('#chkhtml').click(function() {
if ($('#chkhtml').is(':checked')) {
$("#txthtml").mask("999-99-9999");
}
else {
$("#txthtml").mask("99/99/9999");
}
});
});
</script>