2017-11-28 16 views
1

몇 가지 요소를 기반으로 필요한 운송 서비스의 수를 계산하는 예약을하기위한 여러 페이지 양식이 있습니다. 먼저 많은 승객을 선택합니다 ('# input_2_6'). 그리고 선택한 차량의 유형에 따라 필요한 차량의 수를 결정합니다. 따라서 차량을 선택하면 "수량"필드 ("# input_2_20")가 업데이트됩니다. 다음 페이지/단계에서 단방향 또는 왕복을 원할 경우 선택해야하므로 왕복을 선택하면 수량 필드에 2가 곱 해집니다. 다음 페이지/단계에서 주문 요약 (확인 페이지)이 표시됩니다.브라우저로 돌아갈 때 재 계산에서 가치를 지키는 방법은 무엇입니까?

문제는 현재 페이지에서 확인 페이지를 방문하여 이전 페이지로 돌아가서 무언가를 변경하려고하는 경우입니다 (아마 왕복을 원하지 않고 단방향 만 필요하다고 결정했을 것입니다), 수량 번호는 새 값을 유지하며 왕복을 선택할 때 다시 2로 곱 해집니다.

난 정말 어떤 도움을 주셔서 감사합니다 ... 내가 totalBookNew을 만들어 그 이유는,

jQuery(document).ready(function ($) { 
var totalBook; 
    $('#input_2_12').change(function() { 
     switch ($(this).val()) { 
      case 'Escalade|49': 
       $('#input_2_20').val(1); 
        totalBook = Math.ceil($('#input_2_6').val()/5); 
       $("#input_2_20").val(totalBook); 
       break; 
      case 'Suburban|0': 
       $('#input_2_20').val(1); 
        totalBook = Math.ceil($('#input_2_6').val()/6); 
       $("#input_2_20").val(totalBook); 
       break; 
      case 'Van|14': 
       $('#input_2_20').val(1); 
        totalBook = Math.ceil($('#input_2_6').val()/10); 
       $("#input_2_20").val(totalBook); 
       break; 
     } 
    }); 
    totalBookNew = $("#input_2_20").val(); 
    $('input:radio[name="input_7"]').change(function() { 
$('#input_2_20').val(totalBookNew); 
     if ($(this).val() == 'Round trip'){ 
      $('#input_2_20').val(totalBookNew); 
      newTotal = totalBookNew * 2; 
      $('#input_2_20').val(newTotal); 
     } 
     else if ($(this).val() == 'One way'){ 
      $('#input_2_20').val(totalBookNew); 
     } 
    }); 
}); 

나는 두 번째 기능에 대한 첫 번째 함수에서 'totalBook'의 값을 사용하여 시도했지만 그것은 정의되지 않은 반환!

답변

1

계산 한 값을 원래 입력 필드로 설정 한 후 주된 문제 인 것처럼 보입니다. 최선의 방법은 숨겨진 HTML 입력에 계산을 저장하는 것입니다. 따라서 다음과 같은 내용의 입력을 얻게됩니다 :

<input type="hidden" id="input_2_20_calculated" value=0> 

그런 다음 계산 된 값을 입력으로 다시 설정하는 대신 숨겨진 입력으로 설정하십시오. 숨겨진 입력이 양식과 함께 전달되므로 계산 된 값을 사용할 수 있습니다. 따라서 계산이 트리거 될 때마다 이전 계산 값이 두 배가되기 때문에 중복을 얻는 것입니다.

totalBookNew = $("#input_2_20").val(); 
$('input:radio[name="input_7"]').change(function() { 
$('#input_2_20').val(totalBookNew); //This line can be deleted 
    if ($(this).val() == 'Round trip'){ 
     $('#input_2_20').val(totalBookNew); //You can also delete this line 
     newTotal = totalBookNew * 2; 
     $('#input_2_20_calculated').val(newTotal); 
    } 
    else if ($(this).val() == 'One way'){ 
     $('#input_2_20_calculated').val(totalBookNew); 
    } 
}); 

주의 할 사항으로서 백엔드에서 다시 계산해야합니다. 프런트 엔드에서 계산하지 말고 백 엔드에서 계산을 신뢰하십시오. 제출 및 위조 번호에 대한 양식 데이터를 조작하기 쉽습니다.

+0

감사의 말을 전합니다. 추가 숨겨진 입력 필드는 눈을 뜨게했습니다! 귀하의 사이드 노트에 대해 ... 다시 같은 계산을해야합니까? 아니면 단지 몇 가지 유효성 검사? 나는 Wordpress를 중력 양식과 함께 사용하고 있으며, PHP (또는 js를 사용하면 눈치 챘을지도 모릅니다) –