Прозрачно читается из элемента формы, тип которого не имеет значения, с помощью jquery - PullRequest
1 голос
/ 15 июля 2011

Мне бы хотелось иметь такую ​​функцию

// get the value of a form element the way it would be submitted
// by the form
function getVal(fieldName) {
  var $field = $(':input[name=' + fieldName + ']');

  // radio buttons
  if ($field.is(':radio')) {
    return $(':input[name=' + fieldName + ']:checked').val();
  }

  // textarea, input[type=text], select
  else {
    return $field.val();
  }
}

Вышеописанное работает хорошо, поскольку оно обрабатывает как переключатели, так и другие типы ввода формы (не флажки, но мне все равномомент).

Мне было интересно, если бы в jquery не было такой встроенной функции или селектора, которую я должен использовать вместо этого?Потому что для меня переключатели переключаются точно так же, как выбирает, функционально (выбор одного выбора).Я не понимаю, почему я должен относиться по-другому

1 Ответ

2 голосов
/ 15 июля 2011

Многие люди согласятся, что именно так val() должен работать (основываясь на количестве вопросов о получении значений радиокнопок).

И это странно, потому что:

  1. val() уже действует разумно для <select> элементов .

  2. val() устанавливает переключатели интеллектуально.
    Например, учитывая:

    <input type="radio"  name="r" value="radio1"/> rad1 txt
    <input type="radio"  name="r" value="radio2"/> rad2 txt
    

    Тогда:

    $("input[name='r']").val(["radio2"]);
    

    проверяет правильностькнопка!


Так почему же val() не читает радио-кнопки интеллектуально?Очевидно, потому что так все и началось, и есть страх взломать старый код.(Хотя я не знаю, использует ли кто-нибудь val() на одном радиокнопочном узле, чтобы прочитать его непроверенное значение - или почему кто-то захочет.)

Присоединяйтесь к обсуждению в jQueryфорум разработчиков .

...