2016-10-09 13 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で割る必要があります。これは入力イベントを使用して%を計算し、各ループが入力を空にするかどうかをチェックします。変更の理由は、フォームに入力を追加したい場合、スクリプトが残りの部分を計算するため、ソースコードに変更を加える必要はありません。 *あなたの数字入力にmin = "0"属性を追加することをお勧めします* – NewToJS

関連する問題