我在一个id为"qlt“的表单中有一个select元素。如果我更改了该选择的值,其他SELECT(#names)元素也会更改其选项。
但是,似乎更改函数是在我勾选下拉菜单时生效的,而不是在值更改之后生效。
因此,我下面的jquery代码条件具有相反的效果。如果qlt的值为14-1,则选择的名片选项为"Hello (90x55 as )“(90x55 As)。
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/
我所指的两个选择元素是质量和大小下拉列表。表格在中间。
发布于 2013-06-18 11:11:21
实际问题看起来像是回调的执行顺序
使用方法calculate设置qlt变量,该方法是在第701行使用jQuery("select").change(calculate);注册的。
但是更改选项回调是在第528行注册的,它将在调用calculate方法之前执行,这就是为什么qlt的值直到下一次select才会更新。
一种解决方案是将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]);
}
});https://stackoverflow.com/questions/17159945
复制相似问题