在ASP.Net中使用JavaScript将“Enabled TextBoxes”中的值相乘

时间:2011-05-25 07:12:29

标签: javascript c# asp.net controls

我有五个TextBox,例如TextBoxes的ID如下:

     1. txtD1
     2. txtD2
     3. txtD3
     4. txtQuantity
     5. txtTotal

这里,TextBoxes txtD1,txtD2和txtD3是基于DataBase中的值启用或禁用的。在前端,我们不知道哪些TextBox会被启用或禁用。在txtQuantity中我想输入数字。现在我想将启用的TextBox值与txtQuantity相乘,我想将值显示到txtTotal TextBox中。这该怎么做?同时我想将文本框作为函数的参数传递。因此,无论我们想要什么,它都会很有用。

4 个答案:

答案 0 :(得分:1)

您可以使用JavaScript的onblur事件并调用JS方法来计算并将总计分配给总文本框:

<asp:TextBox ID="txtQuantity" runat="server" onblur="javascript:update();"></asp:TextBox>

<script language="javascript" type="text/javascript">
     function update() {
         document.getElementById('<%= txtTotal.ClientID %>').value = 
         document.getElementById('<%= txtQuantity.ClientID %>').value *
         document.getElementById('<%= txtD1.ClientID %>').value;
     }

</script>

答案 1 :(得分:1)

你能用jQuery吗?如果可以,使用jQuery检查哪些已启用,然后将它们全部加起来。我在http://jsfiddle.net/2SfX3/

处有一份工作样本

如果您有html:

<input type="text" class="factor" id="txtD1"/>
<input type="text" class="factor" id="txtD2" disabled="disabled"/>
<input type="text" class="factor" id="txtD3" disabled="disabled"/>
<input type="text" id="txtQuantity" />
<input type="text" id="txtTotal" />
<input type="button" id="compute" value="Compute" />

您可以按照以下方式实现jQuery:

$(document).ready(function() {
    $('#compute').click(function() {
        var total = 0;
        $.each($('.factor'), function(i, data) {
            if (!$(this).attr('disabled')) {
                total = total + parseInt($(this).val());
            }
        });   
 $('#txtTotal').val(parseInt($('#txtQuantity').val()) * total);
    });
});

此输出将是第一个文本框值*数量,因为txtD1是唯一启用的。{/ p>

  • 这假设您正在处理整数。您可以使用parseFloat

答案 2 :(得分:1)

function MultiplyValues(txtBox1,txtBox2,txtBox3,txtQuantity)
{
    var ReturnValue = 1;
    if (txtBox1.disabled==false && txtBox1.value.lenth>0)
        ReturnValue *= txtBox1.value;
    if (txtBox2.disabled==false && txtBox2.value.lenth>0)
        ReturnValue *= txtBox2.value;
    if (txtBox3.disabled==false && txtBox3.value.lenth>0)
        ReturnValue *= txtBox3.value;
    if (txtQuantity.value.length>0)
        ReturnValue *= txtQuantity.value;
    document.getElementById("txtTotal").value = (ReturnValue==1)?0:ReturnValue;
}

上述功能可以根据文本框状态(启用或禁用)和txtTotal中的显示计算值。您可以将此功能应用于按钮 onclick 。事件

@alex,谢谢你告知,我错过了这个案子。 PFB,修改功能

function MultiplyValues(txtBox1,txtBox2,txtBox3,txtQuantity)
{
    var ReturnValue = 1;
    var isThere = 0;
    if (txtBox1.disabled==false && txtBox1.value.length>0) {
        ReturnValue *= txtBox1.value; isThere=1; }
    if (txtBox2.disabled==false && txtBox2.value.length>0) {
        ReturnValue *= txtBox2.value; isThere=1; }
    if (txtBox3.disabled==false && txtBox3.value.length>0) {
        ReturnValue *= txtBox3.value; isThere=1; }
    if (txtQuantity.value.length>0) {
        ReturnValue *= txtQuantity.value; isThere=1; }
    document.getElementById("txtTotal").value = (ReturnValue==1 && isThere==0)?0:ReturnValue;
}

答案 3 :(得分:0)

如果它们是textarea,您可以使用它来查看它们是否已启用

var tags = document.getElementsByTagName('textarea');

var length = tags.length;

for (var i;i <length; i++){
   if (tags[i].disabled == false) {
     // now you can do something with this tag this enabled
     // example
     alert(tags[i].value);
   }
}