Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: активация (деактивация) элементов ввода на странице  (Прочитано 14479 раз)
0 Пользователей и 1 Гость смотрят эту тему.
andrystepa
Помогающий

ru
Offline Offline

« : 22-08-2008 09:57 » 

Задача такая - есть выпадающий список деталей. Если в списке детали не окажется, ее можно добавить в находящемся рядом текстовом поле. Хотелось бы сделать так, чтобы рядом с каждым из полей (списком и полем ввода) стоял радио переключатель выбирающий, в каком из полей будет вводиться информация. Причем его переключение активировало бы соответствующее поле ввода(список или текстовое поле), и деактивировало другое. Реально ли сделать это средствами PHP и HTML? Если реально, то как?
Подскажите пожалуйста!
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 22-08-2008 10:11 » 

js скрипт тебе в помощь

PHP - работает на стороне сервера
На стороне клиента - это организовывается с помощью js
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 22-08-2008 12:45 » 

Только для элементов формы:

Код: (Javascript)
document.getElementById('....').disabled = true;

или (менее предпочтительный вариант)

Код: (Javascript)
document.forms.имя_формы.имя_поля.disabled = true;
« Последнее редактирование: 25-08-2008 11:46 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Chuda
Гость
« Ответ #3 : 22-08-2008 14:36 » 

только если вспомнить про юзабилити…
Записан
andrystepa
Помогающий

ru
Offline 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
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #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
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 25-08-2008 15:28 » 

Шильгия, с пользовательской точки зрения это интуитивно понятнее. В GUI вне web такие заморочки сплош и рядом.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
andrystepa
Помогающий

ru
Offline Offline

« Ответ #9 : 25-08-2008 16:42 » 

RXL,
Собственно так я и хотел сделать. Не хватало лишь той самой функции, которая запрещает одно из полей. Спасибо. Завтра попробую что получилось. Если не ошибаюсь - как я уже говорил с javascript мне мало знаком, чтобы все это работало надо в HEAD запихнуть что-то вроде script language="JavaScript".
« Последнее редактирование: 25-08-2008 16:46 от andrystepa » Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #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
Помогающий

ru
Offline 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
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #13 : 26-08-2008 10:21 » 

andrystepa, нет свойства enabled! Как по твоему, нафига присваивать disabled = true ?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
andrystepa
Помогающий

ru
Offline Offline

« Ответ #14 : 26-08-2008 10:50 » 

RXL,
Поставил вместо enabled = true disabled = false - ничего не изменилось! Все также список затеняется, а текстовое поле нет. Затенение со списка не снимается.
Записан
andrystepa
Помогающий

ru
Offline Offline

« Ответ #15 : 26-08-2008 11:15 » 

Шильгия, Большое спасибо! У меня браузеры только IE и Opera. Правда в Линуксе пользуюсь Файрфоксом, да вот про эту его замечательную возможность до сих пор не знал. Да, верно, дело в прописной букве. Но меня все-же несколько успокаивает то, что не я один не заметил эту ошибку Ага
Еще раз спасибо всем!!
Записан
Chuda
Гость
« Ответ #16 : 26-08-2008 18:44 » 

andrystepa, файерфоксом (ну или другой адекватной мозиллой) лучше пользоваться в первую очередь.
Во-первых, это браузер, наиболее правильно обрабатывающий код, наиболее соответствующий спецификациям.
Во-вторых, в нём наибольшее количество инструментов для разработчика, таких как консоль ошибок, DOM-инспектор, ну и всяческие расширения, которые я перечислять не буду, ибо и так много подобных описаний в инете.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #17 : 27-08-2008 06:27 » 

andrystepa, извини за выражение, но попробуй приложить руки к транспортиру - измерь кривизну.

Найди 10 отличий. Сделай выводы.

Код: (Text)
<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
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #19 : 27-08-2008 15:25 » 

Шильгия, это по быстрому - из его кода сотворил. Работает, ошибок в консоли нет - значит можно считать пример корректным.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines