JavaScript,JQuery问题:页面加载时自动触发函数!

时间:2011-07-23 08:45:40

标签: javascript jquery

我是jQuery的新手,所以请原谅我提出这么简单的问题。我想使用jQuery Spin库,并在值发生变化时收到通知。这是我的代码:

<script>
$(document).ready(function(){
    $.spin.imageBasePath = './theme/css/images/spin1/';
    $('#spin1').spin({
        min: 1,
        max: 99,
        lock: true,
        beforeChange: calculate_price()
    });
});

function calculate_price() {
    $('#lblTotalPrice')[0].innerHTML = $('#spin1')[0].value;
}
</script>

这很简单。但问题是每次加载页面时都会触发“calculate_price”函数,当用户更改Spin Edit的值时,它不会触发。

有人知道为什么会这样吗?

2 个答案:

答案 0 :(得分:4)

我不熟悉那个特定的图书馆,但是如果你还有其他一切,那么你需要改变它:

beforeChange: calculate_price()

到此:

beforeChange: calculate_price

您将beforeChange设置为调用calculate_price()的返回结果,而不是函数本身。因此,它在初始分配时调用一次,而不是在旋转期间调用。

查看beforeChange回调的文档,您将在值实际更改之前被调用。使用两个参数(旧值和新值)调用该回调,因此您可能希望将这些参数添加到calculate_price(newVal, oldVal)函数并使用它们而不是从旋转控件获取值。

答案 1 :(得分:1)

您应该在calculate_price()方法选项中将calculate_price更改为spin()。问题是您尝试将beforeChange字段设置为执行calculate_price函数的结果。这就是为什么每次加载页面时都会调用它。您需要将函数设置为回调,因此,不要将()放在函数名后面。