C# 文本框不是只读的

C# 文本框不是只读的,c#,asp.net,visual-studio-2008,C#,Asp.net,Visual Studio 2008,我有一个文本框,点击后,它允许你从日历控件中选择日期。如果删除了日期,则应取消选中文本框旁边的复选框 通过下面的代码,我可以实现除文本框只读之外的所有功能,这样用户就不能键入任何内容。此外,一旦选中文本,复选框将被选中,但当删除文本时,复选框不会被选中 有人能告诉我我在这里做错了什么吗 <asp:CalendarExtender ID="CalForDate" runat="server" TargetControlID="txtDate" Format="MM/dd/yyyy" Pop

我有一个文本框,点击后,它允许你从日历控件中选择日期。如果删除了日期,则应取消选中文本框旁边的复选框

通过下面的代码,我可以实现除文本框只读之外的所有功能,这样用户就不能键入任何内容。此外,一旦选中文本,复选框将被选中,但当删除文本时,复选框不会被选中

有人能告诉我我在这里做错了什么吗

<asp:CalendarExtender ID="CalForDate"  runat="server" TargetControlID="txtDate" Format="MM/dd/yyyy" PopupPosition="BottomLeft" DefaultView="Days"></asp:CalendarExtender>                                    
<asp:TextBox runat="server" ID="txtDate" AutoPostBack="true" EnableViewState = "false" onKeyPress="javascript:return ChkCheckBox()" OnTextChanged="txtDate_OnTextChanged"></asp:TextBox>
在pageload中,我添加了:

     if (!IsPostBack){     
txtDate.Attributes.Add("readonly", "readonly");}
在文本更改时:

public void txtDate_OnTextChanged(object o, EventArgs e){           
if (!(string.IsNullOrEmpty(txtDate.Text)))
{                                          
     chkDate.Visible = true;
     chkDate.Checked = true;
 }
else
{
     chkDate.Visible = true;
     chkDate.Checked = false;
}    }

您可以使用jquery轻松实现这一点。我将向您发送示例代码。如果需要,请随时寻求进一步的帮助

 <script type="text/javascript">
    $(document).ready(function () {
        $('#txtDate').on('change', function () {
            //console.log('Tested');
            if ($(this).val().toString().trim() != '') {
                $('[Id*=ckTest]').attr('checked', 'checked');
            }
            else {
                $('[Id*=ckTest]').removeAttr('checked');
            }
        });

        $('#btnClear').click(function () {
            $('#txtDate').val('');
            $('#txtDate').trigger('change');
        });
    });
</script>
代码文件如下所示

<form id="form1" runat="server">
    <div>
        <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
        <asp:TextBox ID="txtDate" runat="server" ReadOnly="true" ClientIDMode="Static"></asp:TextBox>
        <asp:CheckBox ID="ckTest" runat="server" />
        <ajaxToolkit:CalendarExtender ID="CalendarExtender1" runat="server" TargetControlID="txtDate" />
        <button id="btnClear">Clear</button>
    </div>
</form>
只需将jquery添加到我使用的项目中
jquery-2.1.4.min.js

谢谢你的建议,但我不想使用新东西,那就是ajaxtoolkit和jquery。你能推荐一些使用Javascript和Asp的东西吗:CalendarExtender加上我的Javascript也在做类似的操作,但不知怎么的,取消勾选不会触发。你能给我发送一个示例项目,这样我就可以为你编码了。上传到github并在此处共享链接。我很快会调查的。
<form id="form1" runat="server">
    <div>
        <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
        <asp:TextBox ID="txtDate" runat="server" ReadOnly="true" ClientIDMode="Static"></asp:TextBox>
        <asp:CheckBox ID="ckTest" runat="server" />
        <ajaxToolkit:CalendarExtender ID="CalendarExtender1" runat="server" TargetControlID="txtDate" />
        <button id="btnClear">Clear</button>
    </div>
</form>