使用jQuery根据动态无线电输入属性值更改总输入值

需要帮助添加,删除,更改无线电输入元素的data-dynamic属性的值来自总输入值。

动态生成无线电输入

    

总输入是:

  

到目前为止,我有jQuery脚本,它将无线电输入data-dynamic值添加到总计

  $("input[type=radio]").click(function(event) { //alert('Button pressed with value: '+dynamicValue); $("input[type=radio]:checked").each(function() { total = Number($('#Total').val()) + $(this).data('dynamic'); }); $('#Total').val(total); }); 

我需要帮助如何从总计中删除已检查的无线电输入data-dynamic属性,如果选中则添加第二个无线电输入data-dynamic属性,或者如果检查带有0的无线电输入data-dynamic属性,则将总输入值重置为原始价格。

谢谢。

您应该使用仅在检查收音机时调用的change事件。 (取消选中时不会触发,因此您不需要减去)
然后,您不必遍历所有无线电,而只需获取已检查的无线电的值。

 var total, myVal; $("input[type=radio]").change(function(event) { // check if 'myVal' variable is defined, if not, set it to the input field value (or 0 if it's empty): if(myVal === undefined){ myVal = ( parseInt($('#Total').val()) || 0); } total = myVal + parseInt($(this).attr('data-dynamic')); $('#Total').val(total); }); 

DEMO


编辑

如果可以手动更新输入字段初始value (通过键入),则可以使用此值。 它只会在使用复选框更新时获取输入字段值:

 var inputVal, prevData, total = $('#Total'); $("input[type=radio]").change(function() { var dynamicData = parseInt($(this).attr('data-dynamic')), totalVal = parseInt(total.val()); if(inputVal === undefined || totalVal !== prevData + inputVal){ inputVal = (totalVal || 0); } total.val(inputVal + (prevData = dynamicData)); }); 

DEMO


确保您的所有无线电都具有唯一的 id属性。