如何在更改事件被触发后使语句生效?

时间:2013-06-18 03:07:33

标签: javascript jquery

我在id为“qlt”的表单中有一个select元素。 如果我更改了该选择的值,则其他SELECT(#names)元素会更改其选项。

但是,似乎更改功能在我勾选下拉列表时生效,而不是在值更改后生效。

所以下面我的jquery代码条件有相反的效果。如果qlt的值是14-1,那么选择将具有“Hello(90x55mm)”,因为它选择了名片(90x55mm。

var qlt = (jQuery("#qlt").val()).split(":")[0];    

jQuery('#qlt').change(function(){   
    if(qlt=="14-1"){
        ChangeOptions(["Business Card (90x55mm)"],"#names",[1]);
    }
    else if(qlt=="14-2"){
        ChangeOptions(["Hello (90x55mm)"],"#names",[2]);
    }
});


jQuery('#names').change(function(){
    quantities=[50,100,250,500,1000,2000,5000];
    ChangeOptions(quantities,"#qlnt",quantities);
});

如果我的问题不明确,您可以访问实际网站: http://210.48.94.218/~printabl/products/labels-stickers/

我指的两个选择元素是质量和尺寸下拉菜单。表格在中间。

1 个答案:

答案 0 :(得分:1)

实际问题看起来像回调执行的顺序

qlt变量是使用方法calculate设置的,该方法是使用jQuery("select").change(calculate);在第701行注册的。 但是更改选项回调是在第528行注册的,它将在调用calculate方法之前执行,这就是qlt的值在下次选择之前不会更新的原因。

一种解决方案是在第528行之前移动jQuery("select").change(calculate);另一个在

之下

这可能是某些脚本执行的问题,我认为qlt应该是#qlt输入中当前选定的值,然后您可以声明一个局部变量并使用{分配当前值{1}}

$(this).val()