在这个例子中,我有两个动作:
当您添加用户数量时 - 它将自动按输入中的总价格计算
当您已添加用户数量时>计算总和>如果您点击欧元 - 输入总金额,则金额将转换为欧元。
所以,每件事情都很好 - 但我不喜欢“usesQuantity”具有全球范围! 任何想法如何使其本地和保存工作版本 http://jsfiddle.net/gb2447jd/5/
尝试了类似的事情:$('#user-quantity').keyup(function(){
var userQuantity = parseInt($(this).val());
if( userQuantity >=1 && userQuantity <=200){
valid(userQuantity);
} else {
$('#total-sum').val("error");
}
});
$('#usd').on('click', function(){
$('#eur').removeClass('greenChacked');
$(this).addClass('greenChacked');
valid(userQuantity);
});
$('#eur').on('click', function(){
$('#usd').removeClass('greenChacked');
$(this).addClass('greenChacked');
valid(userQuantity);
});
$('#usd').trigger('click');
function valid(userQuantity){
if( $('#usd').hasClass('greenChacked') ){
var usdCurr = userQuantity * 10 + 'doll';
$('#total-sum').val(usdCurr);
}
if( $('#eur').hasClass('greenChacked') ){
var eurCurr = userQuantity * 5 + 'eur';
$('#total-sum').val(eurCurr);
}
}
答案 0 :(得分:1)
在函数中定义变量(userQuantity)。它可以通过闭包到其他函数和回调,而不具有全局范围。请参阅此新jsFiddle。
新代码的开头如下:
$(document).ready(function () {
var userQuantity;
$('#user-quantity').keyup(function () {
userQuantity = parseInt($(this).val());
if (userQuantity >= 1 && userQuantity <= 200) {
setCurrency();
} else {
$('#total-sum').val("error");
}
});
答案 1 :(得分:1)
您可以将代码包装在immediately invoked function
中(function () {
var userQuantity;
$(document).ready(function () {
//rest of your code
};
}());
更多信息here。