我在这里遇到了一个非常奇怪的问题。
我有两个select字段,如果其中一个字段更改所选值,它们将显示相同的结果。
下面是代码:
var qlt,internalQ;
if (jQuery("#qlt").length>0){
qlt = (jQuery("#qlt").val()).split(":")[0];
qltDesc = (jQuery("#qlt").val()).split(":")[1];
}
if (jQuery("#internalQ").length>0){
internalQ = (jQuery("#internalQ").val()).split(":")[0];
qltDesc = (jQuery("#internalQ").val()).split(":")[1];
}
<?php if(is_single('booklets')) { ?>
jQuery('#qlt').change(function(){
if (qlt=="4-1") { jQuery('#internalQ').val('4-1:Matt 90gsm'); }
else if(qlt=="4-2") { jQuery('#internalQ').val('4-2:Silk/matt 128gsm'); }
else if(qlt=="4-3") { jQuery('#internalQ').val('4-3:Silk/Matt 150gsm'); }
calculate();
});
jQuery('#internalQ').change(function(){
if (internalQ=="4-1") { jQuery('#qlt').val('4-1:Matt 90gsm'); }
else if(internalQ=="4-2") { jQuery('#qlt').val('4-2:Silk/matt 128gsm'); }
else if(internalQ=="4-3") { jQuery('#qlt').val('4-3:Silk/Matt 150gsm'); }
calculate();
});
<?php } ?>
问题是每个JQuery.change函数(else if(internalQ=="4-3"
和else if(qlt=="4-3")
)的最后一个条件不能按预期工作。该值将更改为第一个选项,NOt第三个选项。
如果我的描述不清楚,我的当前页面是:http://210.48.94.218/~printabl/products/booklets/
我说的字段是Cover Quality
和Internal Quality
问:我是不是漏掉了什么?你能指出来吗?任何帮助都将不胜感激.
发布于 2013-07-03 05:17:56
伙计们我已经解决了这个问题。实际上是我的错。
我有一个默认的HTML代码,用于显示Cover Quality
和Internal Quality
<tr>
<td><?php echo"Cover Quality";?></td>
<td>
<select id="qlt" name="quality">
<option value="4-1:Matt 90gsm">Matt 90gsm</option>
<option value="4-2:Silk/matt 128gsm">Silk/Matt 128gsm</option>
<option value="4-3:Silk/matt 150gsm">Silk/Matt 150gsm</option>
</select></td>
</tr>
我使用jQuery($element).val('$val')
来更改默认值。
我做错的是:在‘掩护和内部质量’中的第三个选项
else if (internalQ=="4-3") {jQuery('#qlt').val('4-3:Silk/Matt 150gsm'); }
而不是:
else if (internalQ=="4-3") {jQuery('#qlt').val('4-3:Silk/matt 150gsm'); }
不同的是大写"M“和小"m”在价值上的区别。
因此,我更改了jQuery代码中的第三个值(或者您可以更改HTML代码),以便该值与HTML中的值完全匹配。解决!:)
感谢迅速的堆叠溢出专业人士谁帮助和提供了一些想法。现在我知道这件事的起因了。
我将更改标题,以便有同样问题的程序员将被导向这篇文章。
发布于 2013-07-03 03:08:34
jQuery('#qlt').change(function(){
var qlt = jQuery(this).val().split(":")[0];
if(qlt.length > 0){
//do your if else here
}
)};
对内质做同样的事情。
如果不希望每次检查长度,只需避免函数中的If状态
发布于 2013-07-03 03:09:08
我认为这个问题源于您将qlt
和internalQ
静态设置在jQuery().change(function(){});
之外。
试着在里面设置值-
var qlt,internalQ;
jQuery('#qlt').change(function(){
qlt = (jQuery(this).val()).split(":")[0]; // set the value of qlt
if(qlt=="4-1"){
jQuery('#internalQ').val('4-1:Matt 90gsm');
}
else if(qlt=="4-2"){
jQuery('#internalQ').val('4-2:Silk/matt 128gsm');
}
else if(qlt=="4-3"){
jQuery('#internalQ').val('4-3:Silk/Matt 150gsm');
}
calculate();
});
jQuery('#internalQ').change(function(){
internalQ = (jQuery(this).val()).split(":")[0]; // set the value of internalQ
if(internalQ=="4-1"){
jQuery('#qlt').val('4-1:Matt 90gsm');
}
else if(internalQ=="4-2"){
jQuery('#qlt').val('4-2:Silk/matt 128gsm');
}
else if(internalQ=="4-3"){
jQuery('#qlt').val('4-3:Silk/Matt 150gsm');
}
calculate();
});
<?php } ?>
参见这个jsFiddle示例- http://jsfiddle.net/zYg2P/1/
https://stackoverflow.com/questions/17438736
复制相似问题