|
|
|
| Всем привет!
Хотелось бы соорудить поочередное добавление значений каждого списка select в текстовое поле input, но не знаю как это организовать.
<select name="raion" size="1" class="pole" id="raion">
<option value="Центр">Центр</option>
.
.
</select>
<select name="street" size="1" class="pole" id="street">
<option value="Ленина">Ленина</option>
.
.
</select>
<select name="house" size="1" class="pole" id="house">
<option value="№1">№1</option>
.
.
</select>
|
Причем, значения списков должны прописываться в поле input строго в порядке: "raion" запятая "street" запятая "house" (Центр, Ленина, №1) и их значения можно было редактировать и дописывать информацию обычным способом.
<input name="adres" type="text" spellcheck="true" class="pole" id="adres" value="">
|
| |
|
|
|
|
|
|
|
для: segazav
(16.10.2014 в 01:38)
| | size -то есть, для списков без множественного выбора это значение по умолчанию и равно 1, и прописывать этот атрибут специально нет смысла.
Что касается списков - а что это будет, формирование адреса пользователя из предложенного города, к примеру? Если да, то даже в небольшом городке эти списки будут внушительных размеров, что их вываливать на страницу, да и как в такой портянке без матов можно сделать выбор?
В таких случаях делают связанные списки - сперва у сервера запрашивается первичный, например, это районы города, выбор в нем делает запрос к следующему списку, который возвращает названия улиц этого района, и т.д. Все это делается асинхронными запросами Ajax.
И запросы ну никак не по "Центр" и "Ленина", а по id этих записей в базе. | |
|
|
|
|
|
|
|
для: confirm
(16.10.2014 в 07:29)
| | Эти списки я просто привел для примера, на самом деле из выбранных списков в теге input автоматически будет формироваться заголовок с возможностью добавления информации обычным способом.
Пробовал вот так:
<script language="JavaScript">
my_func()
{
$('#adres').val( $('#raion').val() + ',' + $('#street').val() + ',' + $('#house').val() );
}
</script>
<select name="raion" size="1" class="pole" id="raion" onchange='my_func();'>
<option value="Центр">Центр</option>
<option value="Уралмаш">Уралмаш</option>
<option value="Изоплит">Изоплит</option>
</select>
<select name="street" size="1" class="pole" id="street" onchange='my_func();'>
<option value="Ленина">Ленина</option>
<option value="8 марта">8 марта</option>
<option value="Космонавтов">Космонавтов</option>
</select>
<select name="house" size="1" class="pole" id="house" onchange='my_func();'>
<option value="№1">№1</option>
<option value="№2">№2</option>
<option value="№3">№3</option>
<option value="№4">№4</option>
</select>
<input name="adres" type="text" spellcheck="true" class="pole" id="adres" value="">
|
В поле input визуально ничего не появляется при выборе значений select | |
|
|
|
|
|
|
|
для: segazav
(16.10.2014 в 11:24)
| | А эти три списка чем-то отличаются от первых?
У вас в самой постановке вопроса нет логики:
1) если это элементы формы, которые отправляются на север, и адрес будет отправлять поле text, то зачем списки отправлять на сервер? Выкидывайте значит у них имена и идентификаторы, пусть служат только для выбора.
2) если отправлять адрес полем text, тогда каким образом можно проверить корректность его ввода? Значит нужны списки как составные параметра, по которым и можно проверить. Тогда зачем нужно поле text? Пусть это будет обычный span для отображения набора.
3) но если поле text это поле, которое содержит номер квартиры, значит нужно, но начерта в него вводить все остальное? Ведь опять столкнетесь с проблемой проверки.
4) еще раз говорю - использовать в значениях списков "Центр", "Уралмаш", "8 марта", "№3" и тому подобное, это ужасно по многим причинам.
5) а что в этом городе Х всего лишь три района (район по английски - area), три улицы и четыре дома? Вы представьте себя на месте пользователя, который должен сделать выбор из списка с 50 значениями, да не в одном, а в трех - удобно?
6) прочтите о spellcheck.
Остальное, это технически вопросы:
Используете JQ, так используйте тогда ее на всю, а не для "опознавания".
onchange='my_func();' - пишите тогда onchange="my_func()", а одиночным кавычкам оставьте роль обрамления строковых аргументов функции. Точка с запятой лишние.
О size уже говорилось.
Списки без опции, которая предлагает сделать выбор, это мина замедленного действия, ибо без них у вас уже есть выбор по умолчанию - Центр, Ленина, №1, а так ли это? Кстати, по правилам написания адресов почтовых отправлений символ № совсем не нужен.
Чтобы что-то во что-то вставить, а тем более отправить, необходима проверка:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script>
$(function() {
$('form').on('change', 'select', function() {
var o = $(this), m = [];
if(!this.value) {
alert(o.children().eq(0).text());
return;
}
$('form').find('select').each(function(i, e) {
if(i < o.index('select') && !e.value) m.push($(e).prev().text());
});
if(m.length) {
alert('Не выбрано:\n'+m.join('\n'));
return;
}
});
});
</script>
<form>
<label>Район</label> <select name="area" class="pole">
<option value="">Выберите район</option>
<option value="Центр">Центр</option>
<option value="Уралмаш">Уралмаш</option>
<option value="Изоплит">Изоплит</option>
</select>
<label>Улица</label> <select name="street" class="pole">
<option value="">Выберите улицу</option>
<option value="Ленина">Ленина</option>
<option value="8 марта">8 марта</option>
<option value="Космонавтов">Космонавтов</option>
</select>
<label>Дом</label> <select name="house" class="pole">
<option value="">Выберите дом</option>
<option value="№1">№1</option>
<option value="№2">№2</option>
<option value="№3">№3</option>
<option value="№4">№4</option>
</select>
<input name="adres" type="text" spellcheck="true" class="pole" id="adres" value=""/>
</form>
|
А над остальным все таки задумайтесь. | |
|
|
|
|
|
|
|
для: confirm
(16.10.2014 в 15:50)
| | Спасибо огромное за помощь, буду разбираться во всем этом... | |
|
|
|
|
|
|
|
|
для: Deed
(16.10.2014 в 18:59)
| | Еще одному невдомек зачем такое. | |
|
|
|