2017-01-03 86 views
0

如果选中复选框,则需要将值赋给其旁边的文本输入。 例如,如果我检查cb1,那么value=1 1应分配到txtcb1。我只需要对选中的复选框仅如果选中复选框,则分配值以输入其旁边的字段

<form name="myForm" action="demo_form.asp" onsubmit="return validateForm()" method="post"> 
    <input type="checkbox" name="cb1" value="1"> <input class="red" id="txtcb1" type="text" name="fname"> 
    Name One | Amount <input type="text" name="Amount1" class="auto-sum"> <br> 
    <input type="checkbox" name="cb2" value="2"> <input class="red" id="txtcb2" type="text" name="fname"> Name Two | Amount <input type="text" name="Amount2" class="auto-sum"> <br> 
    <input type="checkbox" name="cb3" value="3"> <input class="red" id="txtcb3" type="text" name="fname"> Name Three | Amount <input type="text" name="Amount3" class="auto-sum"><br> 
    <input type="checkbox" name="cb4" value="4"> <input class="red" id="txtcb4" type="text" name="fname"> Name Four| Amount <input type="text" name="Amount4" class="auto-sum"> <br> 
    <br> 
    TOTAL <label id="amountTotal">0 <label> 
    AED <br> 
    <input type="submit" value="Submit" onsubmit="return validateForm(this)"> 
</form> 

http://codepen.io/anon/pen/MJWbNR?editors=1111

+0

请**本网站** – Musa

+0

链接代码是在底部 – Learning

+0

在我的眼里是不使用的onChange事件的入住和选项框一个好主意,发布您的代码。事件onClick是我的愚见,更好的选择。它的工作更可靠。 – reporter

回答

1

您可以使用next()选择输入的复选框,这样的旁边:

$(this).next('input[type="text"]').val(id);

工作如下片段:

function validateForm(myButton) { 
 

 
    return true; 
 
} 
 

 
$(document).ready(function() { 
 

 
    //iterate through each textboxes and add keyup 
 
    //handler to trigger sum event 
 
    $(".auto-sum").each(function() { 
 
    $(this).attr('disabled', true); 
 
    $(this).keyup(function() { 
 
     calculateSum(); 
 
    }); 
 
    }); 
 

 
    $('input[type=checkbox]').on('change', function() { 
 
    var id = $(this).val(); 
 
    var active = $(this).prop('checked'); 
 
    if(active){ 
 
     $(this).next('input[type="text"]').val(id); 
 
    }else{ 
 
     $(this).next('input[type="text"]').val(0); 
 
    } 
 
    $('.auto-sum[name=Amount' + id + ']').attr('disabled', !active); 
 
    calculateSum(); 
 
    }); 
 

 
}); 
 

 

 
function calculateSum() { 
 

 
    var sum = 0; 
 
    //iterate through each textboxes and add the values 
 
    $(".auto-sum").each(function() { 
 
    if ($(this).prop('disabled')) return; 
 
    //add only if the value is number 
 
    if (!isNaN(this.value) && this.value.length != 0) { 
 
     sum += parseFloat(this.value); 
 
    } 
 

 
    }); 
 
    //.toFixed() method will roundoff the final sum to 2 decimal places 
 
    $("#amountTotal").html(sum.toFixed(2)); 
 
}
.red { 
 
    background-color: red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form name="myForm" action="demo_form.asp" onsubmit="return validateForm()" method="post"> 
 
    <input type="checkbox" name="cb1" value="1"> 
 
    <input class="red" id="txtcb1" type="text" name="fname">Name One | Amount 
 
    <input type="text" name="Amount1" class="auto-sum"> 
 
    <br> 
 
    <input type="checkbox" name="cb2" value="2"> 
 
    <input class="red" id="txtcb2" type="text" name="fname">Name Two | Amount 
 
    <input type="text" name="Amount2" class="auto-sum"> 
 
    <br> 
 
    <input type="checkbox" name="cb3" value="3"> 
 
    <input class="red" id="txtcb3" type="text" name="fname">Name Three | Amount 
 
    <input type="text" name="Amount3" class="auto-sum"> 
 
    <br> 
 
    <input type="checkbox" name="cb4" value="4"> 
 
    <input class="red" id="txtcb4" type="text" name="fname">Name Four| Amount 
 
    <input type="text" name="Amount4" class="auto-sum"> 
 
    <br> 
 
    <br>TOTAL 
 
    <label id="amountTotal">0 
 
    <label> 
 
     AED 
 
     <br> 
 
     <input type="submit" value="Submit" onsubmit="return validateForm(this)"> 
 

 
</form>

1

在上改变事件的回调您的复选框为此,设置如下面的id值:

$('input[type=checkbox]').on('change', function() { 
    $(this).next('[type="text"]').val($(this).val()); 
}); 

Updated Pen

+0

复选框的值应该分配给红色文本框不是白色的.. – Learning

+0

哦。那么只需使用'next'来获取红色文本框并分配值。我已经更新了我的答案。请检查笔。 – superUser

1

change内部可以使用方法next处理程序:

$(this).next('[type="text"]').val($(this).val()); 
1

尝试使用next()

function validateForm(myButton){ 
 

 
\t return true; 
 
\t } 
 

 
\t $(document).ready(function() { 
 

 
\t  //iterate through each textboxes and add keyup 
 
\t  //handler to trigger sum event 
 
\t  $(".auto-sum").each(function() { 
 
\t   $(this).attr('disabled', true); 
 
\t   $(this).keyup(function() { 
 
\t    calculateSum(); 
 
\t   }); 
 
\t  }); 
 
\t 
 
\t $('input[type=checkbox]').on('change', function() { 
 
\t  var id = $(this).val(); 
 
\t  var active = this.checked ? this.value : 0; 
 
\t  var test=$(this).next(); 
 
\t  $(test).val(active); 
 
\t  $('.auto-sum[name=Amount' + id + ']').attr('disabled', !active); 
 
\t  calculateSum(); 
 
\t }); 
 

 
\t }); 
 

 
\t function calculateSum() { 
 

 
\t  var sum = 0; 
 
\t  //iterate through each textboxes and add the values 
 
\t  $(".auto-sum").each(function() { 
 
\t   if ($(this).prop('disabled')) return; 
 
\t   //add only if the value is number 
 
\t   if (!isNaN(this.value) && this.value.length != 0) { 
 
\t    sum += parseFloat(this.value); 
 
\t   } 
 

 
\t  }); 
 
\t  //.toFixed() method will roundoff the final sum to 2 decimal places 
 
\t  $("#amountTotal").html(sum.toFixed(2)); 
 
\t }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form name="myForm" action="demo_form.asp" onsubmit="return validateForm()" method="post"> 
 
<input type="checkbox" name="cb1" value="1"> <input class="red" id="txtcb1" type="text" name="fname"> 
 
Name One | Amount <input type="text" name="Amount1" class="auto-sum"> <br> 
 
<input type="checkbox" name="cb2" value="2"> <input class="red" id="txtcb2" type="text" name="fname"> Name Two | Amount <input type="text" name="Amount2" class="auto-sum"> <br> 
 
<input type="checkbox" name="cb3" value="3"> <input class="red" id="txtcb3" type="text" name="fname"> Name Three | Amount <input type="text" name="Amount3" class="auto-sum"><br> 
 
<input type="checkbox" name="cb4" value="4"> <input class="red" id="txtcb4" type="text" name="fname"> Name Four| Amount <input type="text" name="Amount4" class="auto-sum"> <br> 
 
<br> 
 
TOTAL <label id="amountTotal">0 <label> 
 
AED <br> 
 
<input type="submit" value="Submit" onsubmit="return validateForm(this)"> 
 
    
 
    </form>

+0

它获得相同的值的所有值,而它应该得到基于复选框的值= 1值= 2 ..... – Learning

+0

@学习现在尝试。 –

相关问题