我正在使用PHP动态生成表单中的一些字段(这里是带有完整代码http://jsfiddle.net/KBYC5/1/的jsFiddle)。
<?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 []元素(其中title与hidden title element匹配)?例如,我希望Contract Manager的contact []字段中包含TEST CONTACT。
答案 0 :(得分:0)
这是适用于我的问题的脚本部分。
<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对象(表单字段发布到数组中)的信息动态填充表单字段。