我正在尝试在rate_value
之外获取名称为#rate_country
的var。因此,在#ch_rate
函数中,此var应该具有相同的值。
我该怎么做?
<script>
var rate_default = 50;
var rate_value = ''; // this doesn't work
$('#rate_country').change(function(){
var rate_input = $('#ch_rate').val();
var rate_country = $(this).val();
if (rate_country == 'AD') {
var rate_value = rate_default * 2;
if (rate_value > rate_input) {
$('#rate_validity').addClass('validity_w');
$('#ch_rate').addClass('i_wrong')
} else {
$('#rate_validity').removeClass('validity_w');
$('#ch_rate').removeClass('i_wrong')
}
} else if (rate_country == 'AG') {
var rate_value = rate_default * 5;
}
});
// so the rate_value should be 250 if rate_country == AG or 100 if rate_country == AD
$('#ch_rate').keyup(function(){
let $this = $(this);
var rate_input = $(this).val();
var rate_regexp = /^((0|[1-9]\d*)(\.\d+)?)?$/;
if (rate_value > rate_input || !rate_regexp.test(rate_input)) {
$('#rate_validity').addClass('validity_w');
$('#ch_rate').addClass('i_wrong')
} else {
$('#rate_validity').removeClass('validity_w');
$('#ch_rate').removeClass('i_wrong')
}
});
</script>
答案 0 :(得分:1)
使用var rate_value
全局声明一次rate_value,然后将其称为rate_value
。如果再次使用var rate_value
,它将被覆盖。
var rate_default = 50;
var rate_value = ''; // Define rate_value once here
$('#rate_country').change(function(){
var rate_input = $('#ch_rate').val();
var rate_country = $(this).val();
if (rate_country == 'AD') {
rate_value = rate_default * 2; //DO NOT USE var here, just change the value of rate_value
if (rate_value > rate_input) {
$('#rate_validity').addClass('validity_w');
$('#ch_rate').addClass('i_wrong')
} else {
$('#rate_validity').removeClass('validity_w');
$('#ch_rate').removeClass('i_wrong')
}
} else if (rate_country == 'AG') {
rate_value = rate_default * 5; //DO NOT USE var here, just change the value of rate_value
}
console.log("rate_value is now: " + rate_value); //See what rate_value is now
});
// so the rate_value should be rate_default * 5 if rate_country == AG
$('#ch_rate').keyup(function(){
console.log("rate_value is now: " + rate_value); //See what rate_value is now
let $this = $(this);
var rate_input = $(this).val();
var rate_regexp = /^((0|[1-9]\d*)(\.\d+)?)?$/;
if (rate_value > rate_input || !rate_regexp.test(rate_input)) {
$('#rate_validity').addClass('validity_w');
$('#ch_rate').addClass('i_wrong')
} else {
$('#rate_validity').removeClass('validity_w');
$('#ch_rate').removeClass('i_wrong')
}
});
请记住,var
定义变量并设置初始值。每次使用var都会重置该值,因此仅使用var
一次(除非您确实要重置。)
答案 1 :(得分:0)
您可以使用全局变量或隐藏参数,然后再获取其他函数