繁体   English   中英

动态表单元素。 使用JS更新当前值

[英]Dynamic form elements. Updating the current values with JS

我有一个表单,用户可以动态生成多个表单元素(重复选择框)。 与我的问题有关的表单代码如下。

for ($i=0; $i < $number; $i++) {                            
    <label for="is_business"> Is A Business?</label>
    <select class="target form-control look2" id="is_business" name="is_business//note the array on name
        <option value="" selected disabled="disabled">select option</option>
        <option value="1">Yes</option>
        <option value="0">No</option>                                                                                       
    </select>
}                           

我使用此表单发布数组$ _POST [is_business],然后对其进行序列化(用于数据库输入)。 无论用户生成多少选择框,所有功能都可以完美运行。

现在,我要做的是将动态表单中的每个选择框设置为从数据库中选择并未序列化的先前发布的值。 我已经检查了从数据库中选择的数据,它看起来也不错,未序列化的字符串(即数组)按预期方式打印...

//unserialized array values selected from database. Count was set to three. Answers were all 'yes'

[is_business_db] => Array(
    [0] => 1 //yes
    [1] => 1 //yes
    [2] => 1 //yes
)

问题:我想使用is_business_db数组值,以便每个动态生成的选择框.... name = is_business [] ...在用户返回页面时显示正确的选择值。 我尝试将以下javascript插入到我的php循环中(显然关闭/打开php标签),仅对生成的第一个选择框有效。

<script>
    $('#is_business').val('<?php echo $is_business_status?>');
</script>

我也尝试过(不是真的期望成功)在脚本的末尾在单独的循环中插入相同的js ...相同的问题...仅更新了第一个选择框。

<?php

    for ($i=0; $i < $number; $i++) //php loop
    {
        $is_business_status=$is_business_db[$i];
?>
        <script>
            $('#is_business').val('<?php echo $is_business_status?>');
        </script>
<?php   
    }
?>      

显然我无法正确执行循环。 任何帮助,将不胜感激。

如果有人对这个问题感兴趣,经过几个小时的挠头,我意识到我做错了明显的事,现在已经解决了这个问题。 它不是特别优雅,但是它适用于在动态创建的选择框中苦苦挣扎的任何人,这些选择框会在刷新或页面访问时返回所选值。

回显的html ....

                      //$is_business_db=serialize($is_business) create array from database string
                      //$number=count($is_business_db)

                        for ($i=0; $i < $number; $i++)  //number is a count of the array values

                        <div class="input_field_remove">                    
                                <div class="form-group">

                                        <label for="is_business"> Is A Business?</label>
                                        <select class="target form-control look2" id="is_business'.$i.'" name="is_business[]">
                                            <option value="" selected disabled="disabled">select option</option>
                                            <option value="1">Yes</option>
                                            <option value="0">No</option>

                                          </select>
                                </div>
                        </div>

然后Javacript ... notes ...使用json编码来捕获javascript内部的php数据(-作为未序列化的数据库字符串,即php数组)。

                    <?php $index_max=count($is_business_db) ?>

                    <script>
                            var index_max='<?php echo $index_max;?>';
                            var value = <?php echo json_encode($is_business_db) ?><!---this is the critical bit---->
                            //var data = JSON.parse(value);//this is recommended -NOT USED- to ensure good js code-but not crucial in all situations

                            //now loop the javascript array and push the current selected values to the user-generated select boxes
                            for (index=0; index < index_max; index++)
                            {
                            $("#is_business"+ index).val(value[index]); 
                            }
                    </script>

我希望这对以后的人有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM