从asp.net后面的代码检查Checkbox

时间:2013-06-12 16:24:42

标签: c# asp.net checkbox

当我在Checkbox中写任何内容时,我想更改textbox状态,所以我做了

<asp:CheckBox ID="chkIceChest" Text="Ice Chest" runat="server" />
<asp:TextBox ID="txtIceChest" Text="$ cost" runat="server" CssClass="moch-cost" AutoPostBack="true" OnTextChanged="CalculateStand" />

protected void CalculateStand(object s, EventArgs e)
{
     double total = 0, cost = 0;
     if (txtIceChest.Text.Length > 0 && txtIceChest.Text != "$ cost")
     {
         cost = Convert.ToDouble(txtIceChest.Text.Replace("$", ""));
         total += cost;
         if (cost > 0) chkIceChest.Checked = true;
     }
}

但它不起作用!!!!为什么?

1 个答案:

答案 0 :(得分:4)

客户端方法怎么样?我的意思是,说实话,像这样的UI操作最适合那里。首先,您需要稍微更改标记:

<asp:CheckBox ID="chkIceChest"
              ClientIDMode="Static"
              Text="Ice
              Chest" runat="server" />
<asp:TextBox ID="txtIceChest"
             ClientIDMode="Static"
             Text="$ cost"
             runat="server"
             CssClass="moch-cost" />

现在您需要一点JavaScript,只需将其放在ASPX页面上:

<script type="text/javascript">
    $('#txtIceChest').blur(function() {
        var total = 0;
        var cost = 0;
        var val = $('#txtIceChest').val();
        var chkIceChest = $('#chkIceChest');

        if (val && val.length > 0 && val != "$ cost") {
            cost = val.replace('$', '');
            total += cost;
            if (cost > 0) {
                chkIceChest.attr('checked', 'checked');
            }
        }
    });
</script>

但这种方法会在浏览器中实时发生。此外,该值将被回发,就像用户已选中复选框一样。