0

我有一个 id 为“qlt”的表单中的选择元素。如果我更改该选择的值,其他 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/

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

4

1 回答 1

1

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

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

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

这可能是某些脚本执行的问题,我假设qlt应该是#qlt输入中的当前选定值,然后您可以声明一个局部变量并使用分配当前值$(this).val()

jQuery('#qlt').change(function(){   
    var qlt = $(this).val().split(":")[0];
    if(qlt=="14-1"){
        ChangeOptions(["Business Card (90x55mm)"],"#names",[1]);
    }
    else if(qlt=="14-2"){
        ChangeOptions(["Hello (90x55mm)"],"#names",[2]);
    }
});
于 2013-06-18T03:11:21.123 回答