当我在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;
}
}
但它不起作用!!!!为什么?
答案 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>
但这种方法会在浏览器中实时发生。此外,该值将被回发,就像用户已选中复选框一样。