我有一个表单,我正在创建多个选择。所以每次我给每个选择一个名字。像
<?php
$dummy = 0
..........
Loop(1,2,3)
.........
Loop(1,2,3)
echo '<td><select name=uperms' . $dummy . 'multiple>';
$dummy ++;
echo '</select></td>';
...
..
?>
现在实际上循环将动态遍历,但我确信每次选择都有不同名称的多个选项。
我不确定何时提交表单已创建了多少选项,以便我可以从每个选择的选项中读取。
类似于在名称为uperms0的select中设置的值,uperms1 ... upermsN
以下是我写的脚本:
<script type="text/javascript">
function submitform()
{
var Form = document.forms.perm;
var Selval = "";
var x = 0;
for (x=0; x < Form.uperms0.length; x++)
Selval = Selval + " " + Form.uperms0.value;
alert(Selval);
document.forms["perm"].submit();
}
</script>
但它只能读取一个选项吗?首先,我需要知道有多少选择,然后通过每个选择名称id循环?
答案 0 :(得分:0)
您可以创建一个包含$ dummy最终值的隐藏字段。 e.g。
<input type="hidden" name="noPerms" value="<?php echo $dummy; ?>" />
然后,在PHP脚本中,您可以从隐藏中获取值并创建一个while循环,该循环将获取相应的选择值。 E.g。
<?php
$noPerms = $_POST['noPerms'];
$x = 0;
while($x <= $noPerms) {
echo $_POST['uperms'.$x];
$x++;
}
?>
答案 1 :(得分:0)
选择元素具有多个属性,如果它们是多重选择,则返回true。要获取所选选项的值,必须循环它们并收集所选选项的值。
表单有一个元素属性,它是表单中所有控件的集合,所以给定对表单的引用,你可以这样做:
function getValues(form) {
var controls = form.elements;
var value;
for (var i=0, iLen=controls.length; i<iLen; i++) {
// Controls must have a name to be successful
if (controls[i].name != '') {
value = getControlValue(controls[i]);
// do something with value
console.log(value)
}
}
}
获取值:
// Return an array of values for the control
function getControlValue(control) {
var values = [];
// Get the value of select elements
if (control.tagName.toLowerCase() == 'select') {
if (control.multiple) {
for (var i=0, iLen=control.options.length; i<iLen; i++) {
if (control.options[i].selected) {
values.push(control.options[i].value);
}
}
} else {
values.push(control.value);
}
}
// Get the values of other controls...
return values;
}
一些游戏标记:
<form>
<select name="foo">
<option value="0">0
<option value="1">1
<option value="2">2
<option value="3">3
</select>
<select name="bar" multiple>
<option value="0">0
<option value="1">1
<option value="2">2
<option value="3">3
</select>
<input type="button" onclick="getValues(this.form)" value="get values">
</form>