Как получить значение текстовых полей, текстовых полей и радио таким же образом в Javascript? - PullRequest
1 голос
/ 27 апреля 2009

Мне нужна функция / код, который будет возвращать значение, предоставленное пользователем для поля, имя / идентификатор которого передано ему. Не должно иметь значения, является ли поле текстовым полем, текстовой областью, радио или выделением. Например, поле может быть:

<input type='radio' name='a_21' value='test' id='a_21_0' />
<input type='radio' name='a_21' value='test2' id='a_21_1' />

Или

<textarea name="a_21" rows="30" cols="6"></textarea>

Когда я звоню:

function getVal('a_21');

Возвращает выбранное значение.

Как я могу это сделать? Будет:

document.myForm.field.value

работает для текстовых, выпадающих и радио тоже?

Ответы [ 2 ]

7 голосов
/ 27 апреля 2009

Проблема в том, что разные виджеты имеют разные цели. Например, поле <select> с несколькими доступными вариантами выбора, несколькими флажками или даже одиночными флажками (значение которых будет просто «включено» или «выключено») не будет иметь одно значение, поэтому они могут вести себя по-разному из других виджетов.

Но если вы хотите иметь одну функцию, вы можете сделать что-то вроде:

function getVal(obj){
  if(obj.value){
    return obj.value;
  }

  if(obj.selectedIndex){
    return obj.options[obj.selectedIndex];
  }

  if(obj.checked){
    return obj.checked;
  }

 return null;
}
4 голосов
/ 27 апреля 2009

Используя jQuery, вы можете сделать:

$('[name="a_21"]').val();

Это даст вам значение поля с именем a_21, поэтому независимо от типа поля.

Примечание: Кавычки не нужны, но я попал в практику их добавления из-за массивов флажков:

<input type="checkbox" name="ids[]" value="1" />
<input type="checkbox" name="ids[]" value="2" />

Я думаю, что лучше быть в безопасности, чем пытаться понять, почему это не работает.

...