我编写了一个用于准备jQuery函数的PHP代码,它可以从html多选框中选择多个值。
有不同的广告系列,它有不同的问题集,其中一个问题集有很多问题集。 以下代码将输出返回为
$('#q9 select').val('2');
$('#q10 select').val('2');
$('#q10 select').val('1');
但我需要此输出为
$('#q9 select').val(['2']);
$('#q10 select').val(['2','1']);
选择多项目,有人可以帮助,谢谢......
<script>
$(function(){
<?php
foreach ($selectdefaults as $s):
?>
$('#q<?php echo $s['campsetjoin']['campid'];?> select').val('<?php echo $s['campsetjoin']['setid'];?>');
<?php
endforeach;
?>
});
</script>
答案 0 :(得分:2)
我认为你应该在更改数组的格式之前:
现在你有这样的话:
array(
array('campid'=>9, 'setid' => 2),
array('campid'=>10, 'setid' => 1),
array('campid'=>10, 'setid' => 2)
)
你应该准备你的数组:
array(
array('campid'=>9, 'setid' => array(2)),
array('campid'=>10, 'setid' => array(1,2))
)
此时你可以写:
<script>
$(function(){
<?php
foreach ($selectdefaults as $s):
?>
$('#q<?php echo $s['campsetjoin']['campid'];?> select').val([<?php echo implode("','",$s['campsetjoin']['setid']); ?>]);
<?php
endforeach;
?>
});
</script>
答案 1 :(得分:1)
(链接到答案底部的代码/演示)
我建议您在原始数据与其使用之间进行准备步骤。排列数据,使每个ID代表一个数据集:
array(2) {
[9]=>
array(1) {
[0]=>
int(2)
}
[10]=>
array(2) {
[0]=>
int(2)
[1]=>
int(1)
}
然后,JSON不是混合使用PHP和JS(导致许多令人困惑的构造,引用等),而是将数据序列化并将其注入脚本中。
(function (injected) {
/*
pure JS here, using `injected` var instead of PHP data
*/
}(
<?php echo json_encode($data); ?>
))
代码/演示: http://codepad.org/BfzOOlPT
答案 2 :(得分:1)
我同意以上两个答案,无论是修改数据结构还是使用纯JS解决方案都会更清晰。但是,如果它们都不是一个选项,你可以这样做:
<script>
$(function(){
<?php
// make a hash with the campid as the key
// and the value be an array of all of the setids
$campids = array();
foreach ($selectdefaults as $s):
$quoted_setid = "'"+$s['campsetjoin']['setid']+"'";
if ($campids[$s['campsetjoin']['campid']) {
$campids[$s['campsetjoin']['campid']][] = $quoted_sid;
}else {
$campids[$s['campsetjoin']['campid']] = array($quoted_sid);
}
endforeach;
foreach ($campids as $c=>$setids):
?>
$('#q<?php echo $c;?> select').val('[<?php echo implode(",", $setids);?>]');
<?php
endforeach;
?>
});
</script>