从多个选择中获取选定的值

时间:2015-02-04 11:46:27

标签: javascript jquery

我有一个表单,我正在创建多个选择。所以每次我给每个选择一个名字。像

<?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循环?

2 个答案:

答案 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>