【问题标题】:Load dynamically generated form fields using JQuery使用 JQuery 加载动态生成的表单字段
【发布时间】:2012-10-23 22:02:41
【问题描述】:

我正在使用 PHP 在表单中动态生成一些字段(这里是带有完整代码的 jsFiddle http://jsfiddle.net/KBYC5/1/)。

<?php 
            $contacts= array('CONTRACT MANAGER', 'MEDICAL DIRECTOR', 'UTILIZATION MANAGER', 'QUALITY IMPROVMENT MANAGER ', 'CHIEF MEDICAL DIRECTOR', 'CMO', 'AUTHORIZATION MANAGER', 'CUSTOMER SERVICE MANAGER');
            foreach ($contacts as $contact) //TODO add something to check if contact already exists and don't show checkbox if it does
            {
                echo "<li>
                        <label>" . ucwords(strtolower($contact)) . "</label>" . inp_return('contact[]', 45) . " <input type='hidden' value='$contact' name='title' /> 
                        <ul>
                            <li><label> Rating: </label>" .  inp_return('rating[]',3) . "</li>
                            <li><label>Phone: </label>" . inp_return('contact_phone[]',13, 'phone'). "</li>
                            <li><label>Ext: </label>" . inp_return('ext[]', 8) . "</li>
                            <li><label>Create Referral Contact</label> " . cbox_return('create_contact[]') . "</li> 
                        </ul>
                        <div class='clear'></div>
                    </li>
                ";
            }
        ?>

如您所见,每个都有一个隐藏的输入,其中包含来自 $contacts 的值。然后我要做的是使用 jQuery 检查隐藏输入字段中的值,将其与 JSON 对象的“title”属性进行比较,然后,如果它们相同,则填写所有表单值.我的脚本部分在这里:

<script type='text/javascript'>
var contacts = $.parseJSON('[{"id":1,"name":"TEST CONTACT","title":"CONTRACT MANAGER","rating":5,"phone":"(000)000-0000","ext":"1111","rfcode":"0000"},
{"id":2,"name":"TEST2 CONTACT","title":"MEDICAL DIRECTOR","rating":2,"phone":"(111)111-1111","ext":"2222","rfcode":"0000"}]');
$(document).ready(function () {$("#contracting_info ul li").each(function (){
    for (var i in contacts)
        {
            alert($(this).children("input[name='title']").val()); die;
            var title = contacts[i].title
            if (title == $(this).children("input[name='title']").val())
                alert('made it here');
        }
    });
});

如何使用 JSON 数组中的值加载每个列表项中的 contact[] 元素(其中标题与隐藏的标题元素匹配)?例如,我希望 Contract Manager 的 contact[] 字段中包含 TEST CONTACT。

【问题讨论】:

  • 我讨厌有人只是随机 -1 的问题并且没有给出任何解释。

标签: php jquery json forms


【解决方案1】:

这是解决我的问题的脚本部分。

<script type='text/javascript'>
var contacts = $.parseJSON('<?php echo json_encode(sql::results("SELECT * FROM crm.dbo.managed_care_contacts where rfcode =" . hexstr($referral->get_id())));?>');
$(document).ready(function () {

    $("#contracting_info li").each(function (){
        for (var i in contacts)
        {
            alert(contacts[i].title + ' ' + $(this).children("input[name='title']").val());
            var title = contacts[i].title
            if (title == $(this).children("input[name='title']").val())
                {
                        $(this).children("input[name='contact[]']").val(contacts[i].name);
                        $(this).find("input[name='contact_phone[]']").val(contacts[i].phone);
                        $(this).find("input[name='ext[]']").val(contacts[i].ext);
                        $(this).find("input[name='rating[]']").val(contacts[i].rating);


                }
        }
    });//close .each (for autofilling form
});

</script>

不幸的是,这意味着我必须遍历每个列表项元素,然后遍历所有联系人(所以我最终会遍历每个 li 的联系人)。它虽然工作正常。

希望这有助于其他尝试使用来自 json 对象(表单字段发布到数组)的信息动态填充表单字段的人。

【讨论】:

    猜你喜欢
    • 2011-08-31
    • 2016-01-20
    • 2012-01-23
    • 1970-01-01
    • 2014-03-15
    • 2015-08-24
    • 1970-01-01
    • 2013-09-24
    • 2019-07-07
    相关资源
    最近更新 更多