如何使用文本框的值添加复选框的值

时间:2017-03-08 06:48:56

标签: javascript jquery asp.net

此处我想在textbox(id=TextBox1)添加多个复选框的值,并在textbox(id=TextBox2)中显示,而不使用任何按钮。 例如:如果我选择checkbox1checkbox3,那么总数将为30,并且将添加textbox1(自动填充的用户无法对其进行编辑),然后将其显示在{ {1}}不使用任何按钮

textbox2

2 个答案:

答案 0 :(得分:0)

如果您想使用C#,则需要回发更改并刷新TextBox2的内容:

ASP.NET / C#(服务器端)

<asp:CheckBox ID="CheckBox1" runat="server" value="5" AutoPostBack="true" OnCheckedChanged="CheckBox1_CheckedChanged"/>
<asp:CheckBox ID="CheckBox2" runat="server" value="15" AutoPostBack="true" OnCheckedChanged="CheckBox1_CheckedChanged"/>
<asp:CheckBox ID="CheckBox3" runat="server" value="25" AutoPostBack="true" OnCheckedChanged="CheckBox1_CheckedChanged"/>
<asp:CheckBox ID="CheckBox4" runat="server" value="35" AutoPostBack="true" OnCheckedChanged="CheckBox1_CheckedChanged"/>

代码背后:

protected void CheckBox1_CheckedChanged ( object sender, EventArgs e )
{
    int sum = Convert.ToInt32( this.TextBox1.Text );
    if ( this.CheckBox1.Checked ) sum += Convert.ToInt32( this.CheckBox1.Attributes["value"] );
    if ( this.CheckBox2.Checked ) sum += Convert.ToInt32( this.CheckBox2.Attributes["value"] );
    if ( this.CheckBox3.Checked ) sum += Convert.ToInt32( this.CheckBox3.Attributes["value"] );
    if ( this.CheckBox4.Checked ) sum += Convert.ToInt32( this.CheckBox4.Attributes["value"] );
    this.TextBox2.Text = sum.ToString();
}

但我更喜欢jQuery来完成这项任务:

编辑:因为你要求那个来获取一些jQuery代码,所以它是:

jQuery(客户端)

备注:属性“value”不会写入html输出中的input。您可以改为使用data-value,然后输入将嵌入到具有指定span属性的data-value中。

<script>
    function clientclick() {
        var tb = $("#<%=TextBox1.ClientID %>");
        var sum = parseInt(tb.val());
        var cb = $("#<%=CheckBox1.ClientID %>");
        if (cb.is(":checked")) sum += parseInt(cb.parent("*[data-value]").data("value"));
        cb = $("#<%=CheckBox2.ClientID %>");
        if (cb.is(":checked")) sum += parseInt(cb.parent("*[data-value]").data("value"));
        cb = $("#<%=CheckBox3.ClientID %>");
        if (cb.is(":checked")) sum += parseInt(cb.parent("*[data-value]").data("value"));
        cb = $("#<%=CheckBox4.ClientID %>");
        if (cb.is(":checked")) sum += parseInt(cb.parent("*[data-value]").data("value"));
        $("#<%=TextBox2.ClientID %>").val(sum);
    }
</script>

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
<asp:CheckBox ID="CheckBox1" runat="server" data-value="5" onclick="clientclick()"/>
<asp:CheckBox ID="CheckBox2" runat="server" data-value="15" onclick="clientclick()"/>
<asp:CheckBox ID="CheckBox3" runat="server" data-value="25" onclick="clientclick()"/>
<asp:CheckBox ID="CheckBox4" runat="server" data-value="35" onclick="clientclick()"/>
<asp:TextBox ID="TextBox2" runat="server" ></asp:TextBox>

这很快,但是我依靠你使用$.each

将这种方法与其他答案结合起来

答案 1 :(得分:0)

这个答案是js with html。我希望它也适用于你的asp

\node_modules\@ngtools\json-schema\src\schema-class-factory.js:34
            result.push(...indices);
                        ^^^

SyntaxError: Unexpected token ...
    at exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:373:25)
    at Object.Module._extensions..js (module.js:416:10)
    at Module.load (module.js:343:32)
    at Function.Module._load (module.js:300:12)
    at Module.require (module.js:353:17)
    at require (internal/module.js:12:17)
$(document).ready(function() {
var sum;
 $("input:checkbox[name=vehicle]").change(function(){
	 sum=0;
   $("input:checkbox[name=vehicle]:checked").each(function(){
   sum=sum+parseInt($(this).val())
});
var txtValue=parseInt($('#txt1').val());
$('#txt2').val(txtValue+sum)
});
});