HTML-форма с несколькими скрытыми элементами управления того же имени

В коде вы делаете: -

        $scope.addContact = function()
        {
          $scope.contact.push({$scope.contact})
        }

Здесь проблема. Если вам просто нужно добавить пустое текстовое поле, вам просто нужно добавить пустой контакт в контакты, а ng-repeat позаботится о добавлении нового текстового поля в список. Другое дело, что вы вступаете в контакт, а не с контактами.

Кроме того, ngSubmit используется внутри формы, которой у вас нет. Итак, используйте ng-click. Здесь plunker показывает, что код работает.

            $scope.addContact = function()
            {
              $scope.contacts.push({ name: '' });
            }

48
задан Brian 16 January 2009 в 21:22
поделиться

4 ответа

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

Программы , предположил собирать в группу тождественно названные объекты. В то время как спецификация HTML явно не говорит это, она неявно указана в документация относительно флажков :

флажки Several в форме могут совместно использовать то же имя элемента управления. Таким образом, например, флажки позволяют пользователям выбирать несколько значений для того же свойства.

36
ответ дан Powerlord 7 November 2019 в 22:29
поделиться

Если у Вас есть что-то вроде этого:

<input type="hidden" name="x" value="1" />
<input type="hidden" name="x" value="2" />
<input type="hidden" name="x" value="3" />

Ваша строка запроса собирается оказаться сходством с x=1&x=2&x=3... В зависимости от программного обеспечения сервера Вы используете для парсинга строки запроса, это не могло бы работать хорошо.

19
ответ дан DavGarcia 7 November 2019 в 22:29
поделиться

Да, и большинство серверов приложений соберет элементы соответствия и свяжет их с запятыми, такими что форма как это:

<html>
<form method="get" action="http://myhost.com/myscript/test.asp">
<input type="hidden" name="myHidden" value="1">
<input type="hidden" name="myHidden" value="2">
<input type="hidden" name="myHidden" value="3">
<input type="submit" value="Submit">
</form>
</html>

... решил бы к URL (в ПОЛУЧИТЬ случае - POST будет работать тот же путь, хотя) как это:

http://myhost.com/myscript.asp?myHidden=1&myHidden=2&myHidden=3

... и был бы представлен Вам в коде как это: (например, после чего-то как Ответ. Запишите (Запрос. QueryString ("myHidden")):

1, 2, 3

Так для захвата значений Вы только что разделили строку и получаете доступ к ним как к массиву (или независимо от того, что сопоставимо на Вашем предпочтительном языке).

(Должен быть разъяснен: В PHP это немного отличается (как Johnathan указывает, нотация скобки представляет объекты как массив к Вашему коду PHP), но ASP, ASP.NET и CF все представляют значения как разделенный запятыми список. Таким образом да, дублирующееся именование абсолютно допустимо.)

5
ответ дан Peter Mortensen 7 November 2019 в 22:29
поделиться

Будут варьироваться различные технологии серверной стороны. С PHP можно использовать синтаксис стиля массива для имени, чтобы вынудить набор быть созданным на конце сервера. Если отправлено на сервер, $_POST['colors'] будет массив с двумя значениями, #003366 и #00FFFF:

<input type="hidden" name="colors[]" value="#003366" />
<input type="hidden" name="colors[]" value="#00FFFF" />

Вообще говоря, Вы захотите использовать стандартное имя без квадратных скобок. Большинство технологий серверной стороны сможет проанализировать получающиеся данные и обеспечить набор некоторого типа. Node.js обеспечивает полезную функциональность через querystring.parse:

const querystring = require('querystring')

querystring.parse('foo=bar&abc=xyz&abc=123') // { foo: 'bar', abc: ['xyz', '123'] }
26
ответ дан Sampson 26 November 2019 в 18:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: