2014-02-06 3 views
0

.data()를 사용하여 양식에서 변수를 설정하려고하는데 변수 "fee"에 대한 출력을 얻을 수 없어 작동하지 않습니다. 공백. 이상적으로 사용자는 유형을 선택하고 푸티지를 입력 한 다음 25 % 또는 50 %를 선택합니다. 각 백분율은 선택한 유형 (hp 또는 lp)에 대한 다른 데이터 항목에 연결됩니다. 그런 다음 선택된 데이터 유형이 data() 선택기에 연결되어 "fee"값을 추출합니다. 이 변수를 제외하고 다른 모든 변수를 표시 할 수 있으므로이 변수가 잘못 될 수 있다고 생각합니다. 나는 내가 뭘 잘못하고 있는지 모르겠어 그래서 어떤 입력 크게 감사하겠습니다! 감사! 여기 .data()를 사용하여 변수 설정

는 JSFiddle입니다 - http://jsfiddle.net/gv0029/g78bG/2/

HTML :

<select class="pSelectP" id="pPost_D"> 
    <option value="select">Type</option> 
    <option data-hp="5" data-lp="2" value="Type 1">Type 1</option> 
</select> 
<br/> 
<input id="pPost_F" class="pSelectQ" placeholder="Footage" /> 
<br/> 
<select id="pPost_P" placeholder="Percentage"> 
    <option value="lp">25%</option> 
    <option value="hp">50%</option> 
</select> 
<br/> 
<input id="pPost_C" placeholder="Cost" /> 
<br/> 
<input id="pPost_A" placeholder="Total" /> 

JS :

$(document.body).on('keypress keydown keyup change', '[class="pSelectP"] , [class="pSelectQ"]', function() { 
    if ($('#manualOverrideNo').prop('checked')) { 
     var parts = $(this).attr('id').split("_"), 
      service = parts[0], 

      footage = parseFloat($("#" + service + "_F").val(), 
           10), 
      percentage = $("#" + service + "_P").val(), 
      fee = parseFloat($("#" + service + "_D").data("'" + 
        percentage + "'"), 10), 
      cost = $("#" + service + "_C"), 


      amount = '', 
      finalAmount = ''; 


     if (isNaN(footage)) { 
      total.val("Please enter Quantity"); 
     } 

     if (!isNaN(footage) && (!isNaN(Number(fee)))) { 
      amount = Math.ceil(footage * fee); 
      total.val(amount); 
      cost.val(fee); 
     } 


    } 

}); 
+1

"manualOverrideNo"라는 요소가 누락되었습니다. 또한 parseFloat는 두 개의 인수를 취하지 않습니다 – HapiDjus

+0

Doh. 내가 수동 JSFiddle을 만들었을 때 ManualOverrideNo를 꺼내는 걸 깜빡했는데 그건 문제가되지 않습니다. 그래도 지적 해 주셔서 감사합니다. 그리고 parseFloat가 두 번째 인수와 함께 사용되어 기본 번호가 사용되도록 설정되었다고 생각 했습니까? 그것은 내가 오래 전부터이 일을 해오지 않았음에도 불구하고 내가 말했던 것과 내가 항상 그것을 어떻게 사용 했는가였습니다. – mario

+1

parseInt는 두 번째 인수를 취할 수 있습니다. http://www.w3schools.com/jsref/jsref_parseint.asp – HapiDjus

답변

1

당신은 수학의 일부를 조정해야 할 수도 있습니다,하지만 난이 당신을 위해 작동합니다 생각 .

$(document.body).on('keypress keydown keyup change', '[class="pSelectP"] , [class="pSelectQ"]', function() { 
      var service = $(this).attr('id').split("_")[0], 
       footage = parseFloat($("#" + service + "_F").val()); 
       pricetype = $("#" + service + "_P option:selected").val(); 
       percentage = parseFloat($('#pPost_D option:selected').data()[pricetype]); 
       fee = percentage * footage; 

      if (isNaN(footage)) { 
       $("#" + service + "_A").val("Please enter Quantity"); 
      } 

      if (!isNaN(footage) && (!isNaN(Number(fee)))) { 
       $("#" + service + "_A").val(Math.ceil(fee)); 
       $("#" + service + "_C").val(fee); 
      } 
    }); 
+0

고마워! 나는 그 길을 통해 그것에 대해서 생각조차하지 않았다. 나는 이것을 확인하고 다시 연락 할 것이다. 다시 한 번 감사드립니다! – mario

+0

코드를 시도했지만이 비율은 비율 대신 실제 비율로 표시됩니다. 나열된 비율은 실제 가격과는 거의 관계가 없습니다 (이상한 설정입니다. 알아요.하지만 그 점이 마음에 들었습니다). 푸티지를 곱하기 위해 필요한 것은 저렴한 가격 ("lp",이 경우 2) 또는 각 서비스에 묶여있는 높은 가격 ("hp",이 경우 5)입니다. 나는 각 가격에 열심히 코드를 작성할 수 있지만 약 100 개가 있으며 매 분기마다 가격이 바뀌므로 열심히 일하는 대신 영리하게 일하려고 노력하고있다. 하지만 고마워. – mario

+1

pPost_D select에서 데이터 값을 가져올 코드를 업데이트했습니다. 그게 당신의 필요에 더 잘 맞는 지보십시오. 이상한 $ ('# select option : selected'). data ('data-foo')는 아무것도 가져 오지 않습니다. – HapiDjus

관련 문제