需要添加选择列表的总数,如果删除则减去

时间:2011-02-01 01:22:30

标签: jquery drupal

这是我用来计算两个值之和的代码(下面的例子)

这在一定程度上有效。它会将两者加在一起,但前提是先选择#edit-submitted-test,即使这样,它也会显示NaN,直到我选择#edit-submitted-test-1

我希望它计算字段的总和并显示实时数量,即edit-submitted-test-1的值将显示500,然后如果我选择另一个字段,它将更新为{{1} }。如果我选择一个选择,它将减去它并返回1000。任何想法都会有所帮助,谢谢!

500

修改

出于某种原因,这会破坏我在Firefox中的Drupal Webform Conditional模块,但它在Google Chrome上工作。

我唯一可以看到的是我添加了另一个js脚本来计算字段总数(该脚本还包括当时可能隐藏的字段),也许这就是破坏的原因。

我正在使用的脚本是

Drupal.behaviors.bookingForm = function (context) {
// some debugging here, remove when you're finished
console.log('[bookingForm] started.');

// get number of travelers and multiply it by 100
function recalculateTotal() {

    var count = $('#edit-submitted-test').val();
    count = parseFloat( count );
    var cost = $('#edit-submitted-test-1').val();
    cost = parseFloat( cost );
    $('#edit-submitted-total').val( count + cost );
}

// run recalculateTotal every time user enters a new value
var fieldCount = $('#edit-submitted-test');
var fieldCount = $('#edit-submitted-test-1');
fieldCount.change( recalculateTotal );

// etc ...
};

我的表单在http://www.healthybrighton.co.uk/wse/node/1

有关如何解决此问题的任何想法?

1 个答案:

答案 0 :(得分:3)

添加额外的支票:

count = count ? parseFloat(count) : 0;

如果count为空(或更具体,评估为false),则会为其分配0。对cost执行相同操作。

或者,如果选择元素默认选择了某个值,您可能需要对此进行测试,例如

 count = (count !== 'defaultValue') ? parseFloat(count) : 0;

顺便说一下。您错误地分配了change处理程序。它应该是:

$('#edit-submitted-test, #edit-submitted-test-1').change( recalculateTotal );

否则,您只会将change处理程序分配给fieldCount的最后一个值,即$('#edit-submitted-test-1')