Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.07.2016, 16:24
Интересующийся
Отправить личное сообщение для MadMaxZZZ Посмотреть профиль Найти все сообщения от MadMaxZZZ
 
Регистрация: 07.07.2016
Сообщений: 11

Появление формы при выборе пункта выпадающего списка
Добрый день, Уважаемые.

Дан вот такой код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Select со скрытыми блоками div</title>
</head>
 
<body>
 
<script>
function Selected(a) {
        var label = a.value;
        if (label==1) {
            document.getElementById("Block1").style.display='block';
            document.getElementById("Block2").style.display='none';
            document.getElementById("Block3").style.display='none';
            document.getElementById("Block4").style.display='none';
            document.getElementById("Block5").style.display='none';
        } else if (label==2) {
            document.getElementById("Block1").style.display='none';
            document.getElementById("Block2").style.display='block';
            document.getElementById("Block3").style.display='none';
            document.getElementById("Block4").style.display='none';
            document.getElementById("Block5").style.display='none';
        } else if (label==3) {
            document.getElementById("Block1").style.display='none';
            document.getElementById("Block2").style.display='none';
            document.getElementById("Block3").style.display='block';
            document.getElementById("Block4").style.display='none';
            document.getElementById("Block5").style.display='none';
        } else if (label==4) {
            document.getElementById("Block1").style.display='none';
            document.getElementById("Block2").style.display='none';
            document.getElementById("Block3").style.display='none';
            document.getElementById("Block4").style.display='block';
            document.getElementById("Block5").style.display='none';
        } else if (label==5) {
            document.getElementById("Block1").style.display='none';
            document.getElementById("Block2").style.display='none';
            document.getElementById("Block3").style.display='none';
            document.getElementById("Block4").style.display='block';
            document.getElementById("Block5").style.display='none';
        } else {
            document.getElementById("Block1").style.display='none';
            document.getElementById("Block2").style.display='none';
            document.getElementById("Block3").style.display='none';
            document.getElementById("Block4").style.display='none';
            document.getElementById("Block5").style.display='none';
        }
         
}
</script>
<div>Выберите тип документа из выпадающего списка:</div></br>
<select id="actSelect" class="Validate_Required " name="actSelect" aria-required="true" onChange="Selected(this)">
       <option value="" selected="selected">-</option>
       <option value="1">Бухгалтерский документ</option>
       <option value="2">Договор</option>
       <option value="3">Дополнительное соглашение</option>
       <option value="4">Письмо</option>
       <option value="5">Приказ</option>
       <option value="6">Распоряжение</option>
</select>
     
    
    <div id='Block1' style='display: none;'></br>
      Выберите документ:
            <select>
                   <option value="" selected="selected">-</option>
                   <option value="a">Акт</option>
                   <option value="b">Накладная</option>
                   <option value="c">Счет-фактура</option>
            </select>
    </div>
    
    <div id='Block2' style='display: none;'></br>
        Предмет договора:
            <select>
                   <option value="" selected="selected">-</option>
                   <option value="a">Выполнение работ</option>
                   <option value="b">Оказание услуг</option>
                   <option value="c">Поставка</option>
            </select>
    </div>
    
    <div id='Block3' style='display: none;'></br>
      Предмет соглашения:
            <select>
                    <option value="" selected="selected">-</option>
                    <option value="a">Изменение цены</option>
                    <option value="b">Изменение сроков</option>
                    <option value="b">Изменение объемов</option>
            </select>
    </div>
    
    <div id='Block4' style='display: none;'></br>
      Выберите тип письма:
            <select>
                    <option value="" selected="selected">-</option>
                    <option value="a">Входящее</option>
                    <option value="b">Исходящее</option>
            </select>
    </div>
 
<div id='Block5' style='display: none;'></br>   
<form method="post" action="index.php">
 
 
        Полное название организации <br/>
        <textarea cols="40" rows="2" name="fullname"></textarea><br/>
        Короткое название организации <br/>
        <input type="text" name="smallname" /><br/>
        ИНН организации <br/>
        <input type="text" name="inn" /><br/>
        КПП организации <br/>
        <input type="text" name="kpp" /><br/>
        Индекс организации <br/>
        <input type="text" name="ind" /><br/>
        Страна расположения организации <br/>
        <input type="text" name="strana" /><br/>
        Город организации <br/>
        <input type="text" name="gorod" /><br/>
        Адрес организации <br/>
        <input type="text" name="adress" /><br/><br/>
        <input type="submit" name="add" value="Добавить организацию" />
        
<?php
include_once("db.php");
 
if(isset($_POST['add']))
{
$fullname = strip_tags(trim($_POST['fullname']));
$smallname = strip_tags(trim($_POST['smallname']));
$inn = strip_tags(trim($_POST['inn']));
$kpp = strip_tags(trim($_POST['kpp']));
$ind = strip_tags(trim($_POST['ind']));
$strana = strip_tags(trim($_POST['strana']));
$gorod = strip_tags(trim($_POST['gorod']));
$adress = strip_tags(trim($_POST['adress']));
 
$query = "SELECT `fullname` FROM `kontragent` WHERE `fullname` = '$fullname'";
$result = mysql_query($query);
    if(mysql_num_rows($result) > 0) echo 'Контрагент с таким именем присутствует в базе';
    else {
        mysql_query("INSERT INTO kontragent (fullname, smallname, inn, kpp, ind, strana, gorod, adress) 
            VALUES ('$fullname', '$smallname', '$inn', '$kpp', '$ind', '$strana', '$gorod', '$adress'");
        echo "Контрагент добавлен в базу данных!";
    }
mysql_close();
}
?>
</div>  
 
</body>
</html>


Подскажите, как вывести Block5 при выборе, допустим "Акт" или "Выполнение работ"?

ЗЫ. Прошу не пинать, учусь, пишу небольшую форму для электронного архива.
Ответить с цитированием
  #2 (permalink)  
Старый 07.07.2016, 19:01
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Для какой цели служат эти списки?
Ответить с цитированием
  #3 (permalink)  
Старый 07.07.2016, 20:13
Интересующийся
Отправить личное сообщение для MadMaxZZZ Посмотреть профиль Найти все сообщения от MadMaxZZZ
 
Регистрация: 07.07.2016
Сообщений: 11

Сообщение от laimas Посмотреть сообщение
Для какой цели служат эти списки?
Логика такая должна быть: пользователь выбирает из выпадающего списка тип документа -> подтип (письмо - входящее\исходящее) -> и в зависимости от выбора, будет появляться форма с необходимыми полями -> появляется форма выбора файла для загрузки -> после нажатия кнопки, файл льется на сервер, информация о типе документа пишется в БД вместе со ссылкой на документ.
ЗЫ. на пхп форму не обращайте внимание, я взял ее для примера (написана для добавления контрагента в БД).

Последний раз редактировалось MadMaxZZZ, 07.07.2016 в 20:19.
Ответить с цитированием
  #4 (permalink)  
Старый 07.07.2016, 20:45
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

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

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

if (label==1) { document.getElementById("Block1").style.display='b lock';
...
и т.д. не требуется, достаточно вместо всех проверок и повторений действий:

nChange="Selected(this.value)"

и

function Selected(a) {
if(a) document.getElementById("Block"+a).style.display=' block';
else alert("Not selected");
}

А все иные блоки скрыть - проходом в цикле по массиву элементов, но можно запоминать текущий выбор, а при следующем выборе скрывать только этот элемент, как предыдущий выбор.

Непосредственно в базу данные так заносить нельзя, этот минимум нужно обязательно знать.
Ответить с цитированием
  #5 (permalink)  
Старый 07.07.2016, 21:28
Интересующийся
Отправить личное сообщение для MadMaxZZZ Посмотреть профиль Найти все сообщения от MadMaxZZZ
 
Регистрация: 07.07.2016
Сообщений: 11

Сообщение от laimas Посмотреть сообщение
А все иные блоки скрыть - проходом в цикле по массиву элементов, но можно запоминать текущий выбор, а при следующем выборе скрывать только этот элемент, как предыдущий выбор.
Как это сделать?

Поправил вот так :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Select со скрытыми блоками div</title>
</head>

<body>

<script>
function Selected(a) {
if(a) document.getElementById("Block"+a).style.display=' block';
else alert("Not selected");
}
         

</script>
<div>Выберите тип документа из выпадающего списка:</div></br>
<select id="actSelect" class="Validate_Required " name="actSelect" aria-required="true" onChange="Selected(this.value)">
       <option value="" selected="selected">-</option>
       <option value="1">Бухгалтерский документ</option>
       <option value="2">Договор</option>
       <option value="3">Дополнительное соглашение</option>
	   <option value="4">Письмо</option>
       <option value="5">Приказ</option>
       <option value="6">Распоряжение</option>
</select>
     
    
    <div id='Block1' style='display: none;'></br>
      Выберите документ:
			<select>
				   <option value="" selected="selected">-</option>
				   <option value="a">Акт</option>
				   <option value="b">Накладная</option>
				   <option value="c">Счет-фактура</option>
			</select>
    </div>
	
    <div id='Block2' style='display: none;'></br>
        Предмет договора:
			<select>
				   <option value="" selected="selected">-</option>
				   <option value="a">Выполнение работ</option>
				   <option value="b">Оказание услуг</option>
				   <option value="c">Поставка</option>
	        </select>
	</div>
	
	<div id='Block3' style='display: none;'></br>
      Предмет соглашения:
			<select>
					<option value="" selected="selected">-</option>
					<option value="a">Изменение цены</option>
					<option value="b">Изменение сроков</option>
					<option value="b">Изменение объемов</option>
			</select>
    </div>
	
	<div id='Block4' style='display: none;'></br>
      Выберите тип письма:
			<select>
					<option value="" selected="selected">-</option>
					<option value="a">Входящее</option>
					<option value="b">Исходящее</option>
			</select>
    </div>

<div id='Block5' style='display: none;'></br>	
<form method="post" action="index.php">


		Полное название организации <br/>
		<textarea cols="40" rows="2" name="fullname"></textarea><br/>
		Короткое название организации <br/>
		<input type="text" name="smallname" /><br/>
		ИНН организации <br/>
		<input type="text" name="inn" /><br/>
		КПП организации <br/>
		<input type="text" name="kpp" /><br/>
		Индекс организации <br/>
		<input type="text" name="ind" /><br/>
		Страна расположения организации <br/>
		<input type="text" name="strana" /><br/>
		Город организации <br/>
		<input type="text" name="gorod" /><br/>
		Адрес организации <br/>
		<input type="text" name="adress" /><br/><br/>
		<input type="submit" name="add" value="Добавить организацию" />
		</form>
<?php
include_once("db.php");

if(isset($_POST['add']))
{
$fullname = strip_tags(trim($_POST['fullname']));
$smallname = strip_tags(trim($_POST['smallname']));
$inn = strip_tags(trim($_POST['inn']));
$kpp = strip_tags(trim($_POST['kpp']));
$ind = strip_tags(trim($_POST['ind']));
$strana = strip_tags(trim($_POST['strana']));
$gorod = strip_tags(trim($_POST['gorod']));
$adress = strip_tags(trim($_POST['adress']));

$query = "SELECT `fullname` FROM `kontragent` WHERE `fullname` = '$fullname'";
$result = mysql_query($query);
    if(mysql_num_rows($result) > 0) echo 'Контрагент с таким именем присутствует в базе';
    else {
        mysql_query("INSERT INTO kontragent (fullname, smallname, inn, kpp, ind, strana, gorod, adress) 
			VALUES ('$fullname', '$smallname', '$inn', '$kpp', '$ind', '$strana', '$gorod', '$adress'");
        echo "Контрагент добавлен в базу данных!";
    }
mysql_close();
}
?>
</div>	

</body>
</html>

Последний раз редактировалось MadMaxZZZ, 07.07.2016 в 21:45.
Ответить с цитированием
  #6 (permalink)  
Старый 07.07.2016, 21:50
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

<!DOCTYPE HTML> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<style>
.box {
    display: none;
}
</style> 
<script>
var currBox = 0;
function Selected(a) {
    if(a) {
        document.getElementById("Block"+a).style.display = "block";
        if(currBox) document.getElementById("Block"+currBox).style.display = "none"; 
        currBox = a; 
    } else alert("Not selected");
}
</script>    
</head> 

<body>
<div>Выберите тип документа из выпадающего списка:</div><br/>
<select id="actSelect" class="Validate_Required " name="actSelect" onchange="Selected(this.value)">
       <option value="" selected="selected">-</option>
       <option value="1">Бухгалтерский документ</option>
       <option value="2">Договор</option>
       <option value="3">Дополнительное соглашение</option>
       <option value="4">Письмо</option>
       <option value="5">Приказ</option>
</select>
      
     
    <div id="Block1" class="box"><br/>
      Выберите документ:
            <select>
                   <option value="" selected="selected">-</option>
                   <option value="a">Акт</option>
                   <option value="b">Накладная</option>
                   <option value="c">Счет-фактура</option>
            </select>
    </div>
     
    <div id="Block2" class="box"><br/>
        Предмет договора:
            <select>
                   <option value="" selected="selected">-</option>
                   <option value="a">Выполнение работ</option>
                   <option value="b">Оказание услуг</option>
                   <option value="c">Поставка</option>
            </select>
    </div>
     
    <div id="Block3" class="box"><br/>
      Предмет соглашения:
            <select>
                    <option value="" selected="selected">-</option>
                    <option value="a">Изменение цены</option>
                    <option value="b">Изменение сроков</option>
                    <option value="b">Изменение объемов</option>
            </select>
    </div>
     
    <div id="Block4" class="box"><br/>
      Выберите тип письма:
            <select>
                    <option value="" selected="selected">-</option>
                    <option value="a">Входящее</option>
                    <option value="b">Исходящее</option>
            </select>
    </div>
 
<div id="Block5" class="box"><br/>  
<form method="post" action="index.php">
 
 
        Полное название организации <br/>
        <textarea cols="40" rows="2" name="fullname"></textarea><br/>
        Короткое название организации <br/>
        <input type="text" name="smallname" /><br/>
        ИНН организации <br/>
        <input type="text" name="inn" /><br/>
        КПП организации <br/>
        <input type="text" name="kpp" /><br/>
        Индекс организации <br/>
        <input type="text" name="ind" /><br/>
        Страна расположения организации <br/>
        <input type="text" name="strana" /><br/>
        Город организации <br/>
        <input type="text" name="gorod" /><br/>
        Адрес организации <br/>
        <input type="text" name="adress" /><br/><br/>
        <input type="submit" name="add" value="Добавить организацию" />
 </form>
</div>
</body> 
</html>


Элемента </br> не существует.
Ответить с цитированием
  #7 (permalink)  
Старый 07.07.2016, 21:59
Интересующийся
Отправить личное сообщение для MadMaxZZZ Посмотреть профиль Найти все сообщения от MadMaxZZZ
 
Регистрация: 07.07.2016
Сообщений: 11

Сообщение от laimas Посмотреть сообщение

Элемента </br> не существует.
Спасибо! Появляющийся блок Block5 при выборе, допустим, "Акт" не получится вывести?
Ответить с цитированием
  #8 (permalink)  
Старый 07.07.2016, 22:10
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от MadMaxZZZ
Появляющийся блок Block5 при выборе, допустим, "Акт" не получится вывести?
Список actSelect связан значениями опций с соответствующими блоками, а значит и для их управления не требуется громоздких условий в коде. Но блока Block6 не существует, а посему опция с таким значением удалена из списка. Как в этом случае должно быть (?), я не в курсе.

Из этого следует, что если опции других списков также будут связаны с некими блоками, то можно использовать этот же скрипт управления. Вообще возникает вопрос - с чего вдруг эти опции имеют значения "a", "b", ...? Продумайте связи, которые бы "сами отвечали на условия" и все будет просто.

Замечание:

$query = "SELECT `fullname` FROM `kontragent` WHERE `fullname` = '$fullname'";
$result = mysql_query($query);
if(mysql_num_rows($result) > 0) echo 'Контрагент с таким именем присутствует в базе';

Не знаю, что есть fullname, но если Иванов Иван Иванович, то это еще не означает уникальность.
Ответить с цитированием
  #9 (permalink)  
Старый 07.07.2016, 22:21
Интересующийся
Отправить личное сообщение для MadMaxZZZ Посмотреть профиль Найти все сообщения от MadMaxZZZ
 
Регистрация: 07.07.2016
Сообщений: 11

Сообщение от laimas Посмотреть сообщение
Список actSelect связан значениями опций с соответствующими блоками, а значит и для их управления не требуется громоздких условий в коде. Но блока Block6 не существует, а посему опция с таким значением удалена из списка. Как в этом случае должно быть (?), я не в курсе.

Из этого следует, что если опции других списков также будут связаны с некими блоками, то можно использовать этот же скрипт управления. Вообще возникает вопрос - с чего вдруг эти опции имеют значения "a", "b", ...? Продумайте связи, которые бы "сами отвечали на условия" и все будет просто.

Замечание:

$query = "SELECT `fullname` FROM `kontragent` WHERE `fullname` = '$fullname'";
$result = mysql_query($query);
if(mysql_num_rows($result) > 0) echo 'Контрагент с таким именем присутствует в базе';

Не знаю, что есть fullname, но если Иванов Иван Иванович, то это еще не означает уникальность.
Не Block6, а Block 5, это див с формой.
fullname это полное наименование контрагента не ООО Ромашка, а Общество с Ограниченной Ответственностью "Ромашка"
Ответить с цитированием
  #10 (permalink)  
Старый 07.07.2016, 22:26
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от MadMaxZZZ
Не Block6, а Block 5, это див с формой.
<option value="5">Приказ</option>
<option value="6">Распоряжение</option>

это же не я придумал.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Меняющейся текст при выборе select ainur777 Общие вопросы Javascript 0 24.10.2014 22:01
Задержка в при выборе меню bserg Элементы интерфейса 1 16.12.2013 11:36
Открытие полей формы при выборе определенного radio gvelisperi Internet Explorer 1 15.12.2013 03:30
Дезактивация пункта выпадающего списка ANALGIN Элементы интерфейса 2 28.11.2013 15:01
раскрывать/скрывать <td> при выборе определенного элемента списка zip Элементы интерфейса 2 19.01.2009 13:58