javascript - 循环输入字段;两次迭代后停止

标签 javascript jquery

我有五个最初不会预填充任何值的表单字段。

如果用户填写其中一个字段,则在他们下次访问表单时,该字段将预先填充上次访问的值。

这就是我正在尝试的:我想创建一个遍历字段的循环。它将始终检查是否有空字段。找到2个空字段后,循环将停止,只显示这2个空字段,而其他字段被隐藏。

这是我目前所拥有的......我只是想不出在遍历两个字段后如何停止,

HTML:

<form action="">
<input id="first" type="text" value="" />
<input id="second" type="text" value="" />
<input id="third" type="text" value="" />
<input id="fourth" type="text" value="" />
<input id="fifth" type="text" value="" />
</form>

JS:

        $(document).ready(function() {
        $('input').hide();

        var firstValue = $('input[id="first"]').val(),
        secondValue    = $('input[id="second"]').val(),
        thirdValue     = $('input[id="third"]').val(),
        fourthValue    = $('input[id="fourth"]').val(),
        fifthValue     = $('input[id="fifth"]').val();

        var firstField = $('input[id="first"]'),
        secondField    = $('input[id="second"]'),
        thirdField     = $('input[id="third"]'),
        fourthField    = $('input[id="fourth"]'),
        fifthField     = $('input[id="fifth"]');

        var formValues = [firstValue, secondValue, thirdValue, fourthValue, fifthValue];
        var fieldIds = [firstField, secondField, thirdField, fourthField, fifthField];

        for (var i = 0; i < fieldIds.length; i++) {
            for (var i = 0; i < formValues.length; i++) {
                if ( formValues[i] === '' ) {
                    fieldIds[i].show();
                    return false;
                }
            }           
        }

    });

最佳答案

取所有输入字段,取前两个空字段并显示;最后,取其补数以隐藏其余部分:

var $inputFields = $('form input:text'),
$emptyFields = $inputFields
  .filter(function() { return this.value == ''; })
  .slice(0, 2)
  .show();

$inputFields
  .not($emptyFields)
  .hide();

Demo

关于javascript - 循环输入字段;两次迭代后停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24521986/

相关文章:

javascript - 单击一个按钮后禁用 2 个按钮

php - 如何在下一页打印 PDF 后拆分表格行并删除标题内容颜色?

javascript - for 循环内的 Gulp 流无法正常工作

java - 将 Json 从 Java 应用程序传递到 PHP (Laravel)

javascript - AngularJS 1.x : perform code while in data-ng-repeat. ..?

javascript - 用于表单验证的 Meteor 双向数据绑定(bind)

javascript - Jquery 获取窗口大小并应用于 div css 并根据浏览器调整大小进行调整

javascript - 创建多个 jQuery/Javascript 小部件

javascript - Chrome 61 的本地存储

javascript - this .join(this) 在 javascript 中如何工作?