элемент в форме пуст в IE - PullRequest
       3

элемент в форме пуст в IE

1 голос
/ 02 ноября 2010

Следующий код работает в 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 раз, Ronny

Ответы [ 3 ]

1 голос
/ 02 ноября 2010

Вам необходимо указать значение для каждой опции. Кроме того, вы не можете получить выбранный вариант, используя значение тега выбора. Вам необходимо использовать:

var selectedOption = document.myform.parameters.options[document.myform.parameters.options.selectedIndex].value;
0 голосов
/ 02 ноября 2010

Это должно быть:

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;
   }

Функциядовольно удобно, когда вы не можете быть уверены, какой тип поля может быть (например, если поле является редактируемым типом при одних обстоятельствах и скрыто под другими), но как только оно написано, оно легко возвращается, особенно для селекторов, радиои флажки.

0 голосов
/ 02 ноября 2010

<option>1234</option>
1234 - это опция text.
<option value="1234">1234</option>
Теперь 1234 - это текст и значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...