Передача скрытых полей ввода в опции HTML Select

c = a + b на самом деле {} + \[\]

{} + []

{} здесь не анализируется как объект, но вместо этого как пустой блок (§12.1, по крайней мере, до тех пор, пока вы не заставляете этот оператор быть выражением, но об этом позже). Возвращаемое значение пустых блоков пустое, поэтому результат этого оператора такой же, как + []. Унарный оператор + (§11.4.6) возвращает ToNumber (ToPrimitive (operand)). Как мы уже знаем, ToPrimitive ([]) является пустой строкой, и согласно §9.3.1, ToNumber ("") равен 0.

blockquote>

a - строка, которая является стороной {}, а b (string[]) - []. Когда вы суммируете строковый объект с массивом строк, javascript неявно преобразует массив строк в объединенную строку (что является ожидаемым поведением)

, поэтому здесь нет ничего противозаконного для javascript.

8
задан Andy Birchall 16 October 2014 в 09:52
поделиться

3 ответа

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

        <select id="myselectlist" >
            <option value="foo|bar">foo</option>
            <option value="foo2|bar2">foo2</option>
        </select>

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

        <select id="myselectlist" >
            <option value="123">foo</option>
            <option value="124">foo2</option>
        </select>

Ваша база данных может выглядеть так:

ID   DisplayValue   OtherData   
123  foo            bar     
124  foo2           bar2    
18
ответ дан 5 December 2019 в 06:38
поделиться

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

<option value="foo" fooData="foo|bar">foo</option>
<option value="foo2" fooData="foo2|bar2">foo2</option>

1
ответ дан 5 December 2019 в 06:38
поделиться

Существует форма ввода type = 'hidden' , которую вы можете обновить с помощью события onchange в раскрывающемся списке выбора, после чего она будет опубликована с формой. Я подозреваю, что вы захотите создать массив возможных значений для скрытого ввода в том же порядке, что и их эквиваленты в раскрывающемся списке выбора, а затем получить доступ к значению в массиве по индексу, используя свойство selectedIndex для элемент выбора.

3
ответ дан 5 December 2019 в 06:38
поделиться
Другие вопросы по тегам:

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