2013-04-02 48 views
2

我正在嘗試創建一個進度條,這個進度條是隨着表單的填寫而增加的。例如,如果我有5個輸入。每個輸入需要填寫以達到100%我的目標是在表單達到100%時激活按鈕。用jquery填寫進度條表格

我的思考過程是做一堆如果空白使它的值爲0,但如果不是,那麼它會得到值10或任意數字。

然後,我只是將這些值相加來完成進度條。

我不知道如何設置值,以便我可以添加它們,或者這是正確的方法。我不確定該去哪裏。下面是代碼:

<form> 
One<input id="1" type="name" name="name"><br /> 
Two<input id="2" type="name" name="name"><br /> 
Three<input id="3" type="name" name="else"><br /> 
Four<input id="4" type="name" name="name"><br /> 
Five<input id="5" type="name" name="name"><br /> 

</form> 


<div id="progressbar"></div> 

$(function() { 
$("#progressbar").progressbar({ 
    value: 37 
}); 

}); 

$(function(){ 
if ($('#1').val() == ''){value == 0}; 
} else { 
    value == 10; }; 
if ($('#2').val() == ''){value == 0}; 
} else { 
    value == 10; }; 
if ($('#3').val() == ''){value == 0}; 
} else { 
    value == 10; }; 
if ($('#4').val() == ''){value == 0}; 
} else { 
    value == 10; }; 
if ($('#5').val() == ''){value == 0}; 
} else { 
    value == 10; }; 
}); 

任何幫助,將不勝感激

+0

你有沒有考慮使用jQueryUI的?有[進度條](http://jqueryui.com/progressbar/)。 –

+0

是的,那是我開始的地方。 –

+0

對不起,我應該多加註意。 –

回答

2

HTML:

<form> 
One<input id="1" type="name" name="name" class='moo'><br /> 
Two<input id="2" type="name" name="name" class='moo'><br /> 
Three<input id="3" type="name" name="else" class='moo'><br /> 
Four<input id="4" type="name" name="name" class='moo'><br /> 
Five<input id="5" type="name" name="name" class='moo'><br /> 
</form> 
<div id="progressbar"></div> 

的Javascript:

$(function() { 
$("#progressbar").progressbar({ 
    value: 0 
}); 

$(".moo").change(function() { 
    var pbVal = 0; 
    if ($("#1").val().length > 0) pbVal += 20; 
    if ($("#2").val().length > 0) pbVal += 20; 
    if ($("#3").val().length > 0) pbVal += 20; 
    if ($("#4").val().length > 0) pbVal += 20; 
    if ($("#5").val().length > 0) pbVal += 20; 
    $("#progressbar").progressbar("option", "value", pbVal); 
    return false; 
}); 

});

+0

我喜歡這種方法,但我個人認爲pbVal應該作爲data-pbValue屬性編碼在HTML元素上,而不是在Javascript中。 Javascript應該負責添加,而不是知道要添加什麼值。如果你這樣做,那麼你可以遍歷各個元素並添加相同的代碼來獲得進度條的總和。 – Jazzepi

+0

謝謝!這很好。 –

+0

@Jazzepi你有這樣的例子嗎? –

5

HTML:

<form> 
One<input id="1" type="name" name="name" data-pbVal="60"><br /> 
Two<input id="2" type="name" name="name" data-pbVal="5"><br /> 
Three<input id="3" type="name" name="name" data-pbVal="5"><br /> 
Four<input id="4" type="name" name="name" data-pbVal="0"><br /> 
Five<input id="5" type="name" name="name" data-pbVal="30"><br /> 
</form> 
<div id="progressbar"></div> 

的Javascript:

$(function() { 
$("#progressbar").progressbar({ 
    value: 0 
}); 

//Register this function to fire whenever a value changes in one of the input elements 
$("form input").change(function() { 
    var pbVal = 0; 
    //For each input element, count the value on the data-pbVal element and add it to the total 
    $("form input").each(function(index) { 
     if($(this).val().length > 0) { 
      pbVal += $(this).data('pbVal'); 
     } 
    }); 
    $("#progressbar").progressbar("option", "value", pbVal); 
     return false; 
    }); 
}); 
+0

謝謝!我計劃在pbVal上添加更多內容,所以我認爲這個很好。感謝您的幫助! –

+0

@TimCooley沒問題。樂於幫助。在JQuery中做簡短的腳本實際上非常有趣。順便說一句,我希望你能夠通過將數據轉移到HTML來識別我想要做的,而不是將它存儲在Javascript中。如果你在HTML中存儲了一些結構化的數據,然後在Javascript中存儲了一些結構化數據,那麼當你更改一個或另一個時,你最終不得不查看這兩個東西。真的,你想要在一個地方的責任,所以耦合是鬆散的,所以如果你需要修改輸入元素的數量,Javascript不會中斷。 – Jazzepi