JQuery карта () формы ввода - PullRequest
       1

JQuery карта () формы ввода

0 голосов
/ 18 февраля 2011

Я сопоставляю атрибуты имени: input, используя приведенный ниже пример.Мне пришлось поместить условный оператор в map (), чтобы узнать, установлен ли флажок, и вернуть true или false.но сейчас я не получаю имя опции выбора attr.Я чувствую, что это требует больше написания кода, чем следовало бы.Какой эффективный способ получить все атрибуты имени и следить за установленными флажками.Проверьте пример на http://jsfiddle.net/gVHaQ/3/

<form>
    <input type="text" name="name" value="John"/>
    <input type="text" name="password" value="password"/>
    <input type="text" name="url" value="http://domain.org/"/>
    <select>
        <option name="one">1</option>
        <option name="two">2</option>
        <option name="three">3</option>
    </select>
    <input type="checkbox"/>            
</form>
<p></p>

$("p").append($(":input").map(function() {
    if ($(this).attr('type') == 'checkbox') {
        return $(this).attr('checked');
    }
    else {
        return $(this).attr('name');
    }
}).get().join(", "));

Это то, что возвращается имя, пароль, URL, true

Ответы [ 2 ]

1 голос
/ 18 февраля 2011

Вы можете избежать использования карты дважды, если вы все еще хотите использовать карту (): http://jsfiddle.net/PmDr9/.

Но если вы хотите пропустить map (), я думаю, что один из способов, который вы можете попробовать, это $ ('form'). Serialize (). И после того, как вы получите сериализованную строку, вы можете использовать выражение регулярных выражений для замены ненужных данных. Обратите внимание, что вам нужно будет указать имя и. Вот пример: http://jsfiddle.net/JKuZE/1/. (Примечание: мое регулярное выражение не так уж велико, поэтому, возможно, вы сможете поиграть с ним и получить желаемый результат).

Я не знаю, является ли вторая реализация тем, что вы ищете, но это предложение.

1 голос
/ 18 февраля 2011

Возможно, это то, что вы хотите?

$("p").append($(":input").map(function() {
    if($(this).is('select')) {
        return $(this).children('option').map(function() {
          return $(this).attr('name');
        }).get().join(", ");
    } else if($(this).attr('type')=='checkbox') {
        return $(this).attr('checked');
    } else {
        return $(this).attr('name');
    }
}).get().join(", "));

http://jsfiddle.net/gVHaQ/4/

Если нет, вам, вероятно, следует указать ожидаемый результат

РЕДАКТИРОВАТЬ: Принятая версия

$("p").append($(":input").map(function() {
    if($(this).is('select')) {
        return $(this).val();
    } else if($(this).attr('type')=='checkbox') {
        return $(this).attr('checked');
    } else {
        return $(this).attr('name');
    }
}).get().join(", "));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...