2016-10-09 5 views
1

페이지의 진행률 막대를 동적으로 업데이트하려고합니다. 그 부분이 효과가 있지만 문제가 있습니다. 첫째, 버튼을 계속 누르고 있으면 카운트가 계속 증가합니다. 그렇다면 두 필드에 동일한 업데이트 버튼이있을 때 특정 필드에 대해 둘 이상의 이벤트가 발생하는 것을 어떻게 막을 수 있습니까? 내 웹 사이트에서 양식이 다른 탭에있는 이유는 동일한 업데이트 버튼을 사용하고 있기 때문입니다. 둘째로, 모든 입력 값을 채우면 15 또는 20 대신에 카운터가 35 증가합니다. 저에게 각각 다른 업데이트 버튼이 없어도 가능한 해결책이 있습니까?진행률 막대를 동적으로 업데이트 중

HTML :

<div class="progress"> 
    <div class="progress-bar" data-values="40">0</div> 
</div> 
<form method="post" action="#" class="basicInfo"> 
    <label>Title:</label> 
    <input type="text" id="title" class="form-control required" /> 
    <br/> 
    <label>Price:</label> 
    <input type="number" id="price" class="form-control required" /> 
    <br/> 
    <input type="submit" name="submit" value="Update" class="btn" /> 
</form> 
<br /> 
<form method="post" action="#" class="descriptionInfo"> 
    <label>Description:</label> 
    <input type="text" id="description" class="form-control required" /> 
    <br/> 
    <input type="submit" name="submit" value="Update" class="btn" /> 
</form> 

JS :

$(document).ready(function() { 
    var percentage = 10; 
    $("[name='submit']").click(function(e) { 
    e.preventDefault(); 
    if ($("#title").val().length > 0 && $("#price").val() > 0) { 
     percentage += 20; 
     $(".progress-bar").css("width", percentage + "%"); 
     $(".progress-bar").text(percentage + "%"); 
    } 
    if ($("#description").val().length > 0) { 
     percentage += 15; 
     $(".progress-bar").css("width", percentage + "%"); 
     $(".progress-bar").text(percentage + "%"); 
    } 

    }); 
}); 

JSFiddle Demo

답변

1

이 누적 문제이다. adding += somevalue 대신에 백분율로 항목을 나눕니다.

필드가 업데이트되면 필드 값 : field1_value = 33.3;을 설정하고 백분율을 업데이트하십시오.

percentage = field1_value + field2_value + field3_value 

편집 : Added jsfiddle example 모든 양식 값을 추가 총 100을 부여해야합니다. : D

+0

나는 당신의 논리를 이해하지만 그것을 구현하는 데 문제가 있습니다 ... http://jsfiddle.net/L0z0v858/2/를 확인하십시오. 데모를 게시 할 수 있습니까? – user4756836

+0

여기에 있습니다 : D [jsfiddle.net] (http://jsfiddle.net/L0z0v858/3/) –

+1

빠른 데모 http://jsfiddle.net/L0z0v858/4/이 방법을 계산하려면 클래스 이름을 사용합니다. 많은 입력은 100 사이에서 나눌 필요가 있습니다. 이것은 % on을 사용하여 입력 이벤트를 사용하여 각 루프가 입력이 비 었는지 또는 진행률을 계산할 0으로 트리거 하는지를 트리거합니다. 변경 이유는 스크립트가 나머지를 계산할 양식에 입력을 추가하거나 추가해야 할 필요가 있기 때문에 소스 코드를 변경할 필요가 없기 때문입니다. * 귀하의 전화 번호 입력에 min = "0"속성을 추가 하시겠습니까? – NewToJS

관련 문제