使用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
属性。