【问题标题】:Progress bar form fill out with jquery用jquery填写进度条表单
【发布时间】:2013-04-02 20:06:44
【问题描述】:

我正在尝试创建一个进度条,该进度条会随着表格的填写而增加。例如,如果我有 5 个输入。每个输入都需要填写才能达到 100% 我的目标是在表单达到 100% 时激活一个按钮。

我的想法是做一堆 if blank 使其值为 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;  };
});

任何帮助将不胜感激

【问题讨论】:

  • 你考虑过使用jqueryui吗?有a progress bar there
  • 是的,这就是我开始的地方。
  • 对不起,我应该多注意一下。

标签: jquery progress-bar


【解决方案1】:

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;
    });
});

【讨论】:

  • 谢谢!我计划在 pbVal 上添加更多内容,所以我认为这个会很好用。感谢 agian 的帮助!
  • @TimCooley 没问题。乐意效劳。在 JQuery 中编写短脚本实际上非常有趣。顺便说一句,我希望您通过将数据转换为 HTML 而不是将其存储在 Javascript 中来识别我正在尝试做的事情。如果您将一些结构化数据存储在 HTML 中,然后将一些结构化数据存储在 Javascript 中,那么在更改其中一个或另一个时,您最终不得不同时查看这两个内容。您确实希望将职责集中在一个地方,因此耦合更松散,因此如果您需要修改输入中的元素数量,Javascript 不会中断。
【解决方案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;
});

});

【讨论】:

  • 我喜欢这种方法,但我个人认为 pbVal 应该在 HTML 元素上编码为 data-pbValue 属性,而不是在 Javascript 中。 Javascript 应该负责添加,而不是知道要添加什么值。如果你这样做了,那么你可以遍历各个元素并使用相同的代码将它们相加以获得进度条的总数。
  • @Jazzepi 你有这方面的例子吗?
  • @TimCooley 添加了使用我提到的方法扩展 Dan 的答案。我认为它更灵活。我也去掉了 moo 类,你不需要添加额外的类 css。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多