逐个输入应在结果字段中显示添加的结果

当用户在第一组的单选按钮中选择任何选项,然后在相应的输入字段中输入任意数字,然后选择下一个任何单选项并在输入字段中输入任何值,那么这次应该将旧结果添加到旧的并显示在结果输入字段中,现在如果他清空任何输入字段,那么它也应该减去总结果并将其显示在结果字段中。

我有这么多团体,但在这里,我只是把其中两个得到了结果。

这里是FIDDLE

这是jquery代码。 我可以在jquery工作,但不是很好我为每个组使用单独的代码,我知道必须有一种方法通过通用代码获得这整个function,但我又不擅长jquery

jQuery("#txt_im").keyup(setValue); jQuery('[name="rdbtn-im"]').change(setValue); function setValue() { var txt_value = jQuery("#txt_im").val(); var rad_val = jQuery('[name="rdbtn-im"]:checked').val(); if(!txt_value.length) { jQuery('#final_res').val(''); return; } if (!rad_val.length) return; var res = txt_value * rad_val; var final = parseInt(res, 10); var MBresult = final / 1024; jQuery('#final_res').val(MBresult.toFixed(2)); } var final2 = 0; jQuery("#txt_fb").keyup(setValue2); jQuery('[name="rdbtn-fb"]').change(setValue2); function setValue2() { var txt_value = jQuery("#txt_fb").val(); var rad_val = jQuery('[name="rdbtn-fb"]:checked').val(); if(!txt_value.length) { jQuery('#final_res').val(''); return; } if (!rad_val.length) return; var res2 = txt_value * rad_val; final2 = parseInt(res2, 10) + final; var MBresult = final2 / 1024; jQuery('#final_res').val(MBresult.toFixed(2)); } 

infact用户可以自由选择任意数量的组,也可以在选择后随意删除任意数量的组。

我知道当用户选择第一组之后选择第二组时会出现错误,它会删除wron的结果,我试图解决它但失败但是我定义了整个看到我需要做的事情。 我非常感谢你的这种恩惠。

HTML:

 
Daily  Weekly
Daily  Weekly  

result

jQuery的:

 jQuery(".txt-email").keyup(setValue); jQuery('.rdbtn-style-social').change(setValue); function setValue() { var total = 0; $(".rdbtn-style-social:checked").each(function () { var myInput = $(this).siblings(".txt-email").val(); if (myInput.length) { total += myInput * $(this).val(); } }); if (total) { jQuery('#final_res').val((total / 1024).toFixed(2)); } else { jQuery('#final_res').val(''); } } 

小提琴

如果您使用的是Chrome,那么控制台是您最好的朋友( https://developers.google.com/chrome-developer-tools/docs/console )对于firefox,您有firebug,Opera有蜻蜓(或类似的东西?)。 甚至IE现在也有控制台。 在那里你可以看到弹出的所有错误。

好的,首先让我们通过将它们全部包含在闭包中来清理它(我们现在可以安全地使用$而不是jQuery,即使外部存在名称空间冲突)。 此外,我们将在两种情况下使用单一function,因为它们非常相似。

 !function ($) { $(".txt-email").keyup(setValue); $('.rdbtn-style-social').change(function(e) { setValue(e, true) }); function setValue(e, radio) { if('undefined' === typeof radio) radio = false; var attr = radio ? 'name' : 'id'; var tmp = e.target[attr].split('-'); var media = tmp[tmp.length - 1]; var txt_value = $("#txt-"+media).val(); var rad_val = $('.rdbtn-style-social[name="rdbtn-'+media+'"]:checked').val(); if (!txt_value.length || !rad_val.length) { $('#final_res').val(''); return false; } var res = (txt_value | 0) * rad_val; var final = parseInt(res, 10); var MBresult = final / 1024; $('#final_res').val(MBresult.toFixed(2)); } }(jQuery); 

(变量| 0与parseInt(变量,10)相同)。 所以,长话短说:当无线电或文本被更改时,函数被触发(如果是无线电,则传递附加参数)。 我们检索我们是否想要在im或fb上工作,然后做你想做的任何事情。 我更改了输入id以替换_ with -‘s(用于分割一致性)

最后的jsfiddle: http : //jsfiddle.net/Misiur/f6cxA/1/