我无法让'var hasLining'
功能正常工作。应该返回“0”或“1”,具体取决于是否有衬里。我无法弄清楚为什么,但它导致函数总是返回错误的答案(我不确定究竟发生了什么,但看起来它给出了下一个等式的值)。
我发布了一个小提示来证明问题:jsfiddle.net/chayacooper/9NKjT/1
var isThickerFabric = function() {
var item = $("[name=Item]").val();
return item == "Blazer" || item == "Jacket" || item == "Outerwear";
}
var hasLining = function() {
var lining = $("[name=Lining]").val();
return lining != "0";
}
$("[name=Item],[name=Fabric_Type],[name=Lining]").change(function(){
if ( $("[name=Fabric_Type]").val() === "Satin" ) {
var fabricThicknessElement = $('[name=Fabric_Thickness]');
if ( isThickerFabric() && !hasLining || !isThickerFabric() && hasLining ) {
fabricThicknessElement.val('2');
} else if ( isThickerFabric() && hasLining() ) {
fabricThicknessElement.val('3');
} else {
fabricThicknessElement.val('1');
}
}
});
答案 0 :(得分:0)
var hasLining
函数检查[name=Lining]
是否具有值“0”,当[name=Lining]
字段为空时,它总是返回true,或者除了0之外的任何值,它将返回false值为0,
这就是为什么它总是得到fabricThicknessElement
3的值,因为它总是得到一个真实的形式var hasLining
如果你想根据衬里是否为空来得到结果。更改var hasLining
return lining != ""
并将条件更改为
if ((isThickerFabric() && !hasLining()) || (!isThickerFabric() && hasLining()))