Php 默认复选框有问题:Javascript
我创建了以下函数,用于在加载页面时检查复选框的第一个值-Php 默认复选框有问题:Javascript,php,javascript,html,ajax,checkbox,Php,Javascript,Html,Ajax,Checkbox,我创建了以下函数,用于在加载页面时检查复选框的第一个值- function defaultCheck(){ document.checkBoxForm.list[0].checked = true; var val=document.checkBoxForm.list[0].value; showtotal[0] = document.checkBoxForm.list[0].value; show(val); editVal();
function defaultCheck(){
document.checkBoxForm.list[0].checked = true;
var val=document.checkBoxForm.list[0].value;
showtotal[0] = document.checkBoxForm.list[0].value;
show(val);
editVal();
//alert('ajhsdjha');
}
我使用了
在html页面加载中的函数
我的问题是-当列表中有多个值时,默认情况下函数会选择第一个值,但当列表中只有一个值时,函数不会选择它。复选框的值通过以下方式从数据库中动态检索:
<?php
while($row=mysql_fetch_array($levelq)) {?>
<input type='checkbox' name="list" value="<?=$row['tag']?>"
id="<?=$row['tag']?>" onclick="" />
<? echo $row['tag'].' '.'<br/><br/>';
}
?>
我不知道为什么它的行为如此怪异。有人能帮我吗 我敢打赌问题在于
[0]
的使用。你有没有考虑过把它去掉
但是,也就是说,无论如何,你不应该在JS中这样做,你应该在PHP中这样做:
$checked = 'checked="true"';
while($row=mysql_fetch_array($levelq)) {
// you also may wish to consider using list[] instead of list. That will make
// reading the value much easier in PHP
?>
<input type='checkbox' name="list" value="<?=$row['tag']?>"
id="<?=$row['tag']?>" onclick="" <?=$checked?> />
<? echo $row['tag'].' '.'<br/><br/>';
$checked = "";
}
$checked='checked=“true”;
while($row=mysql\u fetch\u数组($levelq)){
你也可以考虑使用列表[]而不是列表。
//在PHP中读取值要容易得多
?>
我敢打赌问题在于[0]
的使用。您考虑过删除它吗
但是,也就是说,无论如何,你不应该在JS中这样做,你应该在PHP中这样做:
$checked = 'checked="true"';
while($row=mysql_fetch_array($levelq)) {
// you also may wish to consider using list[] instead of list. That will make
// reading the value much easier in PHP
?>
<input type='checkbox' name="list" value="<?=$row['tag']?>"
id="<?=$row['tag']?>" onclick="" <?=$checked?> />
<? echo $row['tag'].' '.'<br/><br/>';
$checked = "";
}
$checked='checked=“true”;
while($row=mysql\u fetch\u数组($levelq)){
你也可以考虑使用列表[]而不是列表。
//在PHP中读取值要容易得多
?>
就像@cwallenpole所说的,您应该在PHP中完成这项工作
如果您仍想在JS中执行此操作,请执行以下操作:
function defaultCheck(){
if(document.checkBoxForm.list.length > 1) {
document.checkBoxForm.list[0].checked = true;
var val=document.checkBoxForm.list[0].value;
showtotal[0] = document.checkBoxForm.list[0].value;
} else {
document.checkBoxForm.list.checked=true;
var val=document.checkBoxForm.list.value;
showtotal[0] = document.checkBoxForm.list.value;
}
show(val);
editVal();
//alert('ajhsdjha');
}
这是因为,当只有1个复选框时,列表引用该复选框,而不是像@cwallenpole所说的那样,您应该在PHP中执行此操作
如果您仍想在JS中执行此操作,请执行以下操作:
function defaultCheck(){
if(document.checkBoxForm.list.length > 1) {
document.checkBoxForm.list[0].checked = true;
var val=document.checkBoxForm.list[0].value;
showtotal[0] = document.checkBoxForm.list[0].value;
} else {
document.checkBoxForm.list.checked=true;
var val=document.checkBoxForm.list.value;
showtotal[0] = document.checkBoxForm.list.value;
}
show(val);
editVal();
//alert('ajhsdjha');
}
这是因为,当只有一个复选框时,列表引用该复选框,而不是复选框数组。它会检查所有值而不是只检查第一个值吗?@Pow否。如果在循环之前查看,有$checked=”;
,然后在循环中输出
。就在该迭代结束之前,设置为$checked=“”;
>将使所有其他迭代都不打印任何内容,而不是checked=“true”它会检查所有的值而不是只检查第一个值吗?@Pow No。如果你在循环之前查看,有$checked='';
,然后在循环中输出
。就在这个迭代结束之前,它被设置为$checked=“;
>,这将使所有其他迭代都不打印任何内容而不是选中=“对”