Можно ли не пропустить некоторые поля формы в запросе GET? - PullRequest
3 голосов
/ 08 апреля 2010

У меня есть форма с некоторыми входными текстами, переданными в GET, и я не хочу иметь в GET все поля; я хочу избежать пустых полей.

Итак, конкретный пример для:

<form method="GET" action="an_url">
    <input type="text" name="field1"/>
    <input type="text" name="field2"/>
    <input type="text" name="field3"/>
    <input type="submit" value="submit"/>
</form>

Я предполагал, что поля, отключенные html-атрибутом "disabled", не должны передаваться в GET.

Итак, я сделал js (на основе jquery), чтобы отключить пустые поля при отправке, примерно так:

$("form").submit(function() {
    $(this).find("input[type=text]").each( function () {
        if (!$.trim($(this).val())) {
            $(this).attr("disabled", "true");
        }
    });
});

Однако это не работает. Есть идеи?

Ответы [ 2 ]

3 голосов
/ 08 апреля 2010

Атрибут disabled принимает одно и только одно значение: disabled.Установка true недопустима.

(Установка свойства disabled - это отдельная история, или true или false)

2 голосов
/ 08 апреля 2010

Вы можете удалить атрибут name следующим образом:

 $("form").submit(function() {
     $(this).find("input[type=text]").each( function () {

        if (!$.trim($(this).val())) {
            $(this).removeAttr("name");
        }
     });
 });

Из Рекомендации W3C :

Когда форма отправляется на обработку, имя некоторых элементов управления связывается с их текущим значением, и эти пары передаются вместе с формой. Те элементы управления, для которых представлены пары имя / значение, называются успешными элементами управления.

...