这是我用来计算两个值之和的代码(下面的例子)
这在一定程度上有效。它会将两者加在一起,但前提是先选择#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
有关如何解决此问题的任何想法?
答案 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')
。