#javascript #asp.net
#javascript #asp.net
Вопрос:
Я немного новичок в javascript, и мне трудно понять, как динамически создавать текстовые поля из выпадающего списка с помощью javascript. Вот моя проблема в деталях. Вот мой выпадающий список:
<asp:DropDownList ID="ddlFlightSelection" runat="server" CssClass="dropbtn" onclick="createTextForm()">
<asp:ListItem>PLEASE CHOOSE A FLIGHT</asp:ListItem>
<asp:ListItem>ONE-WAY</asp:ListItem>
<asp:ListItem>ROUND-TRIP</asp:ListItem>
<asp:ListItem>MULTI-CITY</asp:ListItem>
</asp:DropDownList>
Как вы можете видеть, у меня есть функция с именем createTextForm() в отдельном файле javascript, который я пытаюсь выяснить.
function createTextForm(){
var input = document.createElement('input');
input.type = "text";
container.appendChild(input);
}
Редактировать: я ценю помощь всех, но из-за моего плохого понимания и описания рассматриваемой проблемы я решил пойти с другим решением моей проблемы. Вместо этого я создал текстовые поля, скрытые с помощью CSS, а затем просто показывал их на основе выбора выпадающего списка.
Комментарии:
1. Итак … учитывая, возможно, отсутствие контекста,
container
не определено в вашей функции, т. Е. Нетvar container = DOMObject
;2. Извините, я не понимаю. Контейнер не определен? Имейте в виду, что это была моя попытка создать текстовое поле, я не уверен, правильно это или нет. Я работал над этим, и я думаю, что onchange() вместо onclick() — лучший вариант, но создание текстового поля все еще сбивает меня с толку.
3. Да, так … что это
container
?container
это может быть целое число, число с плавающей запятой, строка, какой-либо объект из созданного вами класса и т. Д. Или объект объектной модели документа (DOMObject). Что вам нужно сделать, это либо создать другой контейнер с идентификатором или классом, который вы можете использовать для его выбора. Например, в asp создайте элемент сid="container"
помощью . В javascript вы можете выбрать этот элемент, сказав:var container = document.getElementById('container');
, который идет с другими объявлениями переменных… т.е. рядом сvar input
.4. Ах, я думаю, теперь я понимаю, да, действие, которое создает ввод, должно было быть выбором выпадающего списка. Таким образом, односторонний способ, например, создаст текстовое поле для ввода из города, а другое — для ввода в город, а другое — для даты вылета.
5. Является ли мой контейнер не выпадающим списком @ShanerM13? Так что идея выбрать с помощью javascript var container = document.getElementById(‘Выпадающий список flightselection’);
Ответ №1:
Итак, я понимаю намерение… но я не знаком с asp и с тем, как создать еще один элемент в теле … который я мог бы погуглить… но в любом случае… то, что вы хотите сделать, — это в основном…
function createTextForm(){
var input = document.createElement('input');
var container = document.getElementsByTagName('body')[0];
//container could also be obtained with an element with id=my_container like so...
container = document.getElementById('my_container');
//or with a class... which returns an array of elements, so you have to select one
container = document.getElementByClassName('my_containers')[some number to select which element];
//if you have an element with id='dropDownListFlightSelection', you can use:
container = document.getElementById('dropDownListFlightSelection');
input.type = "text";
container.appendChild(input);
}
Ответ №2:
вот то, что у вас есть в данный момент, и это на самом деле не имеет смысла, потому что каждое изменение при выборе добавит ввод…
const container = document.getElementById('input_container')
, selector = document.getElementById('ddlFlightSelection')
;
let count = 0
;
selector.onchange = evt =>
{
let input = document.createElement('input');
input.type = "text";
input.placeholder = `${selector.value} - ${ count}`
container.appendChild(input);
}
<select ID="ddlFlightSelection" class="dropbtn">
<option>PLEASE CHOOSE A FLIGHT</option>
<option>ONE-WAY</option>
<option>ROUND-TRIP</option>
<option>MULTI-CITY</option>
</select>
<div id="input_container"></div>