Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Добавление значений списка select в поле input
 
 автор: segazav   (16.10.2014 в 01:38)   письмо автору
 
 

Всем привет!

Хотелось бы соорудить поочередное добавление значений каждого списка 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="">

  Ответить  
 
 автор: confirm   (16.10.2014 в 07:29)   письмо автору
 
   для: segazav   (16.10.2014 в 01:38)
 

size -то есть, для списков без множественного выбора это значение по умолчанию и равно 1, и прописывать этот атрибут специально нет смысла.

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

В таких случаях делают связанные списки - сперва у сервера запрашивается первичный, например, это районы города, выбор в нем делает запрос к следующему списку, который возвращает названия улиц этого района, и т.д. Все это делается асинхронными запросами Ajax.
И запросы ну никак не по "Центр" и "Ленина", а по id этих записей в базе.

  Ответить  
 
 автор: segazav   (16.10.2014 в 11:24)   письмо автору
 
   для: 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

  Ответить  
 
 автор: confirm   (16.10.2014 в 15:50)   письмо автору
 
   для: 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>


А над остальным все таки задумайтесь.

  Ответить  
 
 автор: segazav   (16.10.2014 в 16:44)   письмо автору
 
   для: confirm   (16.10.2014 в 15:50)
 

Спасибо огромное за помощь, буду разбираться во всем этом...

  Ответить  
 
 автор: Deed   (16.10.2014 в 18:59)   письмо автору
 
   для: segazav   (16.10.2014 в 01:38)
 

http://jsbin.com/salege/1/edit?js,output

  Ответить  
 
 автор: confirm   (16.10.2014 в 19:15)   письмо автору
 
   для: Deed   (16.10.2014 в 18:59)
 

Еще одному невдомек зачем такое.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования