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」であるかどうかをチェックします。[name=Lining]フィールドが空または 0 以外の値の場合は常に true を返し、値が 0 の場合は false を返します。

fabricThicknessElementそのため、常に true フォームを取得するため、常に 3の値を取得します。var hasLining

ライニングが空かどうかに基づいて結果を取得したい場合。変化する var hasLining

return lining != ""

また、条件を次のように変更します

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

于 2013-04-05T07:41:03.907 に答える