IE中表单中的元素为空

时间:2010-11-02 12:39:59

标签: php javascript forms

以下代码在FF中工作,但在IE中不起作用。 IE中没有document.myform["parameters"].value的值。

代码:

function form_elements()
{
   if(document.myform.elements["parameters"].value == '')
    {
       myform_values = ......
    }
}

 <form method="post" name="myform">
  <div id="parameters_info">
    <select id="parameters" name="parameters" onfocus="e =form_elements();" >
        <?php
            foreach($params_name as $name)
              {
                if($name == $param_posted)
              {
                  echo "<option selected>$name</option>";
              }
              else
              {
                  echo "<option>$name</option>";
              }
            }

        ?>
      </select>
</div>
</form>

我也试过document.myform["parameters"].value,但值为空。

我的选择如下:

<option>1234</option>
<option>234a</option>

我想要选项的值将在函数中。

10倍, 罗尼

3 个答案:

答案 0 :(得分:1)

您需要为每个选项提供一个值。此外,您无法使用select标记的值获取所选选项。你需要使用:

var selectedOption = document.myform.parameters.options[document.myform.parameters.options.selectedIndex].value;

答案 1 :(得分:0)

<option>1234</option>
1234 - 是text选项 <option value="1234">1234</option>
现在1234 - 是一个文本和值。

答案 2 :(得分:0)

应该是:

document.forms["myform"].elements["parameters"].options[document.forms["myform"].elements["parameters"].selectedIndex].text

...或者您可以使用这样的函数,它返回任何字段类型的值数组:

function getFieldValueArray(fld, frm) {
   // fld may be a field object or a field name
   // frm may be an index or a name, defaults to document.forms[0] when needed and not supplied
   //function returns an array of values
   var form = frm ? document.forms[frm] : document.forms[0];
   var field = (typeof(fld) == "object") ? fld : form.elements[fld];
   var valueArray = new Array();
   var multinode = (field.length>1) ? true : false;
   var type = field.type;
   if (!type) {
      type = field[0].type;
      }
   switch(type) {
      case "radio": //fall-through intentional
      case "checkbox":
         if (multinode) {
            for (i=0; i<field.length; i++) {
               if (field[i].checked) {
                  valueArray.push(field[i].value);
                  }
               }
            }
         else {
            if (field.checked) {
               valueArray.push(field.value);
               }
            }
         break;
      case "select-one": //fall-through intentional
      case "select-multiple":
         var options = field.options;
         for (i=0; i<options.length; i++) {
            if (options[i].selected) {
               valueArray.push(options[i].value ? options[i].value : options[i].text);
               }
            }
         break;
      case "text": //fall-through intentional
      case "file":
         valueArray.push(field.value);
         break;
      case "hidden":
         valueArray = field.value.split(";");
         break;
      case "textarea":
         valueArray = field.value.split("\n");
      default:
         alert("Field not found -- atGetField(" + fld.toString() + ")");
      }
   return valueArray;
   }

当你无法确定字段的类型时(例如,如果字段在某些情况下是可编辑的类型并隐藏在其他字段下),该函数会非常方便,但是一旦写入它就很容易回退,尤其适用于选择,收音机和复选框。