0

我无法让该'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');
    }
  }    
});
4

1 回答 1

0

var hasLining函数检查是否[name=Lining]有值“0”,当字段为空或0以外的任何值时它总是返回true,[name=Lining]当它的值为0时它会返回false,

这就是为什么它总是得到fabricThicknessElement3 的值,因为它总是得到一个真实的形式var hasLining

如果您想根据衬里是否为空来获得结果。改变 var hasLining

return lining != ""

并将条件更改为

if ((isThickerFabric() && !hasLining()) || (!isThickerFabric() && hasLining()))

于 2013-04-05T07:41:03.907 回答