Как передать только определенные значения формы - PullRequest
0 голосов
/ 02 февраля 2009

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

<SELECT name=field001>
  <option value=-1>Please pick a value</option>
  <option value=1>1</option>
  <option value=2>2</option>
  <option value=3>3</option>
</SELECT>

Обычно, только один или два будут выбраны одновременно, и я хотел бы передать только выбранные в форму. Я предполагаю, что мне нужно сбросить входные данные, которые в JavaScript имеют значение -1, но я не уверен, как это сделать, а также задаюсь вопросом, может ли существовать стандартный подход к такого рода вещам.

Ответы [ 4 ]

5 голосов
/ 02 февраля 2009

Когда вы публикуете форму, она отправляет значения каждого элемента управления на сервер. Если вам нужно это предотвратить, я думаю, что вам лучше всего перезаписать действие onSubmit и перенаправить на новый экземпляр той же страницы, поместив только ту информацию, которую вы хотите, в строку запроса.

Помните, что это значительно усложнит ваш код и усложнит его сопровождение. Мое мнение таково, что вы просто не получите достаточную производительность, которая окупит ваши усилия, но это ваше дело.

1 голос
/ 02 февраля 2009

при условии, что у вас есть только одна форма, добавьте этот скрипт на свою страницу:

document.forms[0].onsubmit = function(){
    var selects = this.getElementsByTagName('select');
    for ( var i = selects.length - 1; i>=0; i-- ) {
        if ( selects.item(i).value == -1 ) {
            selects.item(i).parentNode.removeChild(selects.item(i));
        }
    }
    return true;
}
1 голос
/ 02 февраля 2009

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

Обычно, только один или два будут выбраны одновременно

Так что ты даже не уверен на 100%, а? Опыт научил меня никогда не доверять тому, что, как вы надеетесь, может произойти «обычно», потому что часто бывает неожиданным то, что вы поймете!

1 голос
/ 02 февраля 2009

Это не распространено.

Если вам это действительно нужно, то вы можете либо сделать то, что предложил @Sergio, либо фактически удалить элементы, которые вы хотите пропустить из dom, или, возможно, пометить их как отключенные при отправке (хотя некоторые браузеры могут делать разные вещи с disabled управления - вам нужно проверить).

Это действительно не часто. Если у вас так много вариантов выбора, что их отправка вызывает проблемы, у вас слишком много вариантов выбора.

Обычный способ справиться с этим - использовать магическое значение «-1», чтобы знать, когда игнорировать определенные значения на стороне сервера.

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