| 
			| 
					
						| andrystepa 
								Помогающий    Offline | 
								|  | «  : 22-08-2008 09:57 »  |  | 
 
 Задача такая - есть выпадающий список деталей. Если в списке детали не окажется, ее можно добавить в находящемся рядом текстовом поле. Хотелось бы сделать так, чтобы рядом с каждым из полей (списком и полем ввода) стоял радио переключатель выбирающий, в каком из полей будет вводиться информация. Причем его переключение активировало бы соответствующее поле ввода(список или текстовое поле), и деактивировало другое. Реально ли сделать это средствами PHP и HTML? Если реально, то как?Подскажите пожалуйста!
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Sla | 
								|  | « Ответ #1 : 22-08-2008 10:11 »  |  | 
 
 js скрипт тебе в помощь
 PHP - работает на стороне сервера
 На стороне клиента - это организовывается с помощью js
 
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Мы все учились понемногу... Чему-нибудь и как-нибудь. |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #2 : 22-08-2008 12:45 »  |  | 
 
 Только для элементов формы: document.getElementById('....').disabled = true; или (менее предпочтительный вариант) document.forms.имя_формы.имя_поля.disabled = true; |  
						| 
								|  |  
								| « Последнее редактирование: 25-08-2008 11:46 от RXL » |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Chuda 
								Гость
 | 
								|  | « Ответ #3 : 22-08-2008 14:36 »  |  | 
 
 только если вспомнить про юзабилити… |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| andrystepa 
								Помогающий    Offline | 
								|  | « Ответ #4 : 25-08-2008 11:32 »  |  | 
 
 К сожалению о javascript у меня весьма маленькое представление. Можно ли в эту конструкцию: <form action="insproj.php" method="post"><table>
 <tr>
 <td>Выбрать проект:
 <br>
 <select name="selprj">
 <option value="ТПЧ">"ТПЧ"</option>
 <option value="ТПУ">"ТПУ"</option>
 <option value="ТПМ">"ТПМ"</option>
 <option value="ТПО">"ТПО"</option>
 </select>
 </td>
 </tr>
 <tr>
 <td>
 или введите
 <br>
 название нового проекта:
 <br>
 <input type="text" name="selprj" size="25" maxlength="50">
 </td>
 <tr>
 </table>
 </form>
 
Добавить код  document.forms.имя_формы.имя_поля.disabled = true;
так, чтобы сначала деактивировать текстовое поле ввода, а при необходимости, по нажатии кнопки (прошу прощения, кнопку в коде забыл сделать), активировать его. Я собственно даже не знаю, куда на странице этот код можно добавлять. Имя_поля, это как я понимаю, selprj, а вот что такое Имя_формы? В тех справочниках, что у меня под рукой ничего толкового про иерархию классов нету. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Chuda 
								Гость
 | 
								|  | « Ответ #5 : 25-08-2008 12:59 »  |  | 
 
 нельзя. и вообще, до поры до времени забудь про такое понятие, как «имя формы» помни про волшебное слово getElementById document.getElementById('id_поля').disabled = true;
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #6 :  25-08-2008 13:12 »   |  | 
 
 <select name="selprj" id="selprj"><input type="text" name="selprj" id="selprj" size="25" maxlength="50">Добавь два радиобатона в одну группу. Повесь на изменение обоих скрипт, где будешь запрещать одно поле и разрешать другое. На стороне сервера проверяй, какой радиобатон был активен и обрабатывай соотв. поле. |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Chuda 
								Гость
 | 
								|  | « Ответ #7 : 25-08-2008 13:28 »  |  | 
 
 хотя вот реально не стоит так делать.сделать просто селект и текстовое поле.
 если текстовое поле заполнено, значит его значение берём.
 если нет — из селекта.
 
 а не то получится юзабилити-кошмар
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #8 : 25-08-2008 15:28 »  |  | 
 
 Шильгия, с пользовательской точки зрения это интуитивно понятнее. В GUI вне web такие заморочки сплош и рядом. |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| andrystepa 
								Помогающий    Offline | 
								|  | « Ответ #9 : 25-08-2008 16:42 »  |  | 
 
 RXL, Собственно так я и хотел сделать. Не хватало лишь той самой функции, которая запрещает одно из полей. Спасибо. Завтра попробую что получилось. Если не ошибаюсь - как я уже говорил с javascript мне мало знаком, чтобы все это работало надо в HEAD запихнуть что-то вроде script language="JavaScript".
 |  
						| 
								|  |  
								| « Последнее редактирование: 25-08-2008 16:46 от andrystepa » |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #10 : 25-08-2008 17:27 »  |  | 
 
 andrystepa, не забывай, что не тользо запрещать надо, но и наоборот. <script type="text/javascript">....программа....</script>или <script type="text/javascript" src="ссылка на файл с программой"></script>Не обязательно в head. Но функции должны быть объявлены раньше, чем будут использованы. |  
						| 
								|  |  
								| « Последнее редактирование: 25-08-2008 17:30 от RXL » |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| andrystepa 
								Помогающий    Offline | 
								|  | « Ответ #11 : 26-08-2008 06:46 »  |  | 
 
 Сделал пробный файл. Код такой: <html><head>
 <title>JAVASCRIPT</title>
 </head>
 <body bgcolor='tan'>
 <script language="JavaScript">
 <!-- Замаскировались
 function SelectInput1() {
 document.getElementById('selprj2').disabled = true;
 document.getElementById('selprj1').enabled = true;
 }
 function selectInput2() {
 document.getElementById('selprj1').disabled = true;
 document.getElementById('selprj2').enabled = true;
 }
 //Демаскировались -->
 </script>
 
 <center>
 <h1>ПРИМЕР JAVASCRIPT</h1>
 </center>
 <br>
 <br>
 <select name="selprj1" id="selprj1">
 <option value="ТПЧ">"ТПЧ"</option>
 <option value="ТПУ">"ТПУ"</option>
 <option value="ТПМ">"ТПМ"</option>
 <option value="ТПО">"ТПО"</option>
 </select>
 <input type = "radio"
 name = "sel"
 value = "select1" onClick="selectInput1()"> ВЫБРАТЬ ИЗ СПИСКА
 <br>
 ИЛИ
 <br>
 <input type="text" name="selprj2" id = "selprj2" size="25" maxlength="50">
 <input type = "radio"
 name = "sel"
 value = "select2" onClick="selectInput2()"> ВВЕСТИ НОВОЕ НАЗВАНИЕ ПРОЕКТА
 </body>
 </html>
 
Возможно в функциях я что-то и напортачил - я не нашел описания getElementById, поэтому enabled подставил по аналогии. Впрочем не в этом главное. Когда я открываю файл и выбираю радиобатоном выпадающий список - с текстовым полем ввода ничего не происходит. А вот когда выбираю текстовое поле - список деактивируется. И если даже после этого опять выбрать выпадающий список - он все равно не активен. А текстовое поле активно всегда. Что не так? |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Chuda 
								Гость
 | 
								|  | « Ответ #12 : 26-08-2008 09:24 »  |  | 
 
 а вот тебе занимательный джаваскрипт в картинках   http://slil.ru/26089336 чего-то там не работает, но чего именно — как понять? |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #13 : 26-08-2008 10:21 »  |  | 
 
 andrystepa, нет свойства enabled! Как по твоему, нафига присваивать disabled = true ? |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| andrystepa 
								Помогающий    Offline | 
								|  | « Ответ #14 : 26-08-2008 10:50 »  |  | 
 
 RXL, Поставил вместо enabled = true disabled = false - ничего не изменилось! Все также список затеняется, а текстовое поле нет. Затенение со списка не снимается.
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| andrystepa 
								Помогающий    Offline | 
								|  | « Ответ #15 : 26-08-2008 11:15 »  |  | 
 
 Шильгия, Большое спасибо! У меня браузеры только IE и Opera. Правда в Линуксе пользуюсь Файрфоксом, да вот про эту его замечательную возможность до сих пор не знал. Да, верно, дело в прописной букве. Но меня все-же несколько успокаивает то, что не я один не заметил эту ошибку   Еще раз спасибо всем!! |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Chuda 
								Гость
 | 
								|  | « Ответ #16 : 26-08-2008 18:44 »  |  | 
 
 andrystepa, файерфоксом (ну или другой адекватной мозиллой) лучше пользоваться в первую очередь.Во-первых, это браузер, наиболее правильно обрабатывающий код, наиболее соответствующий спецификациям.
 Во-вторых, в нём наибольшее количество инструментов для разработчика, таких как консоль ошибок, DOM-инспектор, ну и всяческие расширения, которые я перечислять не буду, ибо и так много подобных описаний в инете.
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #17 : 27-08-2008 06:27 »  |  | 
 
 andrystepa, извини за выражение, но попробуй приложить руки к транспортиру - измерь кривизну. Найди 10 отличий. Сделай выводы. <html><head>
 <title>JAVASCRIPT</title>
 </head>
 <body>
 <script type="text/javascript">
 
 function selectInput1()
 {
 document.getElementById('selprj1').disabled = false;
 document.getElementById('selprj2').disabled = true;
 }
 
 function selectInput2()
 {
 document.getElementById('selprj1').disabled = true;
 document.getElementById('selprj2').disabled = false;
 }
 
 </script>
 <form>
 <select name="selprj1" id="selprj1">
 <option value="ТПЧ">"ТПЧ"</option>
 <option value="ТПУ">"ТПУ"</option>
 <option value="ТПМ">"ТПМ"</option>
 <option value="ТПО">"ТПО"</option>
 </select>
 <input type="text" name="selprj2" id = "selprj2" size="25" maxlength="50">
 <br>
 <input type = "radio" name = "sel" value = "select1" onclick="selectInput1();">
 <input type = "radio" name = "sel" value = "select2" onclick="selectInput2();">
 </form>
 </body>
 </html>
 |  
						| 
								|  |  
								| « Последнее редактирование: 27-08-2008 06:29 от RXL » |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Chuda 
								Гость
 | 
								|  | « Ответ #18 : 27-08-2008 08:02 »  |  | 
 
 RXL, смотри, а то и в этом коде можно замерить кривизну   и она будет ненулевой. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #19 : 27-08-2008 15:25 »  |  | 
 
 Шильгия, это по быстрому - из его кода сотворил. Работает, ошибок в консоли нет - значит можно считать пример корректным. |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	|  |