【问题标题】:how to dynamically render multiple form elements using for loop如何使用for循环动态呈现多个表单元素
【发布时间】:2014-10-03 08:14:10
【问题描述】:

我想为一个表单显示一定数量的输入标签;这应该取决于用户动态选择他们想要的项目数量。

例如,如果用户说他们想要 3 件商品。我想显示 3 个输入栏。

我不清楚进行此操作的最佳方法。例如,我能够确定他们从选择选项中选择了多少项目:

 $(".howmany").change(function(){

            var value  = $(this).val(); 

}

但是之后的正确方法是什么?我是否使用 for each: 动态呈现选择的输入标签的确切数量:或预显示(但隐藏)所有输入标签,并且只显示请求的输入标签的确切数量。

我会很感激它是如何完成的一个例子。目前我只能隐藏整个区域。例如:

var requests =  $("#howmany").val();

        if (reqeusts < 1){
            $('#reqeusts').hide();
        }
        else {
           $('#reqeusts').show();
       }

但我显然需要能够根据用户选择的数字显示单独的表单标签。

再次嗨,我要感谢大家的回答。

非常抱歉,但我忘了提及造成混淆的原因是输入的值是从数组函数动态馈送的。

public function arrayValues() 
                    {
                        return $selection = array(
                            '0' => 'none' ,' 1' => '1 item' ,' 2' => '2 item' ,' 3' =>' 3 item' );
                    } 

然后我需要为每个选定的项目数呈现以下输入选择标签之一。

                    <?php echo ' 
                    <select id="howmany" name="items[howmany]"  />'; 


                    foreach ($arrayValues as $key => $value)
                    {       
                        echo '<option value="' . $key .'">' . $value . '</option>';
                    }
                    echo'</select>'; 
                    ?>

【问题讨论】:

  • 但我显然需要能够根据用户选择的数字显示单独的表单标签。 不正确。您将需要一个 form 和可变编号 inputs
  • 一个简单的for loop 附加inputs 可以很好地解决您的问题。
  • 嗨,MelancialUk。谢谢您的答复。我认为这些问题比简单的 for 循环更复杂。我没有在问题中给出完整的问题。我为这个错误道歉。需要动态呈现的输入标签是选择标签,它们依赖于提供给它们的数组值。我已经修改了我原来的问题。我还要求不要下载我的问题。我认为这是一个复杂的问题

标签: javascript forms for-loop show-hide


【解决方案1】:
$(".howmany").change(function(){

            var value  = $(this).val(); // get the number of inputs
            value = parseInt(value); // make sure it's an integer
            htmlStr = "";
            for (var i = 0; i < value; i++)
            {
                  htmlStr += "Label " + i +" <input type='text'>";
            }

            $('.container').empty();
            $('.container').append(htmlStr);
}

【讨论】:

    【解决方案2】:

    你需要这样的东西:

    $('button').click(function () {
        $('div').empty().append(new Array(+$('input[type=number]').val()+1)
       .join("<input type='text' placeholder='Type Something'/>"));
    });
    

    我希望这能让您了解如何解决您的问题。

    DEMO

    【讨论】:

    • 嗨,阿米特。非常感谢你的帮助。我现在正在看。我忘了提到我需要为输入标签提供数组值。我已经纠正了我上面的问题。我认为现在的问题是如何将这些数组值输入到您的方程式中
    猜你喜欢
    • 1970-01-01
    • 2023-03-06
    • 2019-07-21
    • 1970-01-01
    • 2011-06-14
    • 2018-07-03
    • 2023-01-10
    • 1970-01-01
    • 2020-06-24
    相关资源
    最近更新 更多