Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Блокирование формы, заблокировать отправку 
:(
    Опции темы
Sindrom
Дата 21.9.2007, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 21.9.2007

Репутация: нет
Всего: нет



Здравствуйте.
Я с javascript совсем не знаком, но по долгу работы мне нужно сделать одну вещь с применением JS. так что без вашей помощи мне никак не обойтись smile Ситуация такая:
Есть форма.  В форме много элементов, но имеют значение только два из них: поле ввода и выпадающий список (с тремя пунктами: выполнено, в процессе, готово). Необходимо сделать следующее: если человек выбирает в списке один определенный пункт, то поле ввода, которое раньше было неактивным, становится доступным для ввода. При этом, надо сделать так, чтобы в этом случае пустое поле отправить было уже нельзя.
То есть если пользователь выбирает пункт "выполнено", то он обязан написать комментарий, а иначе форма не отправится.

Спасибо. Надеюсь на вашу поддержку.
PM MAIL   Вверх
dsCode
Дата 21.9.2007, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 565
Регистрация: 8.9.2007
Где: Saint-Petersburg

Репутация: 19
Всего: 26



Sindrom,

1. Сделайте 4 пункта в выпадающем списке. Первый из них имеет значение 0, название "Выберите действие".

2. На select повесить событие onChange, в котором проверять, если значение выбранного элемента не равно 0 (if (parseInt(Ваш_селект_полученный_по_id.options[то_же.selectedIndex].value) !== 0)), то делать активным поле ввода (поле_ввода_полученное_по_id.disabled = falsel;), иначе - снова неактивным.

3. При отправке формы в событии onSubmit (у формы) или в onClick у кнопки возвращать false, если значение из поля ввода пустое. Выдавать alert('Введите комментарий').



Это сообщение отредактировал(а) dsCode - 21.9.2007, 13:36


--------------------
the .code inside
:my music
PM MAIL WWW ICQ Jabber   Вверх
Sindrom
Дата 24.9.2007, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 21.9.2007

Репутация: нет
Всего: нет



Значит я делаю следующее. Пишу такой заголовок функции:
Код

<script language="JavaScript">
function sendForm () {
    if parseInt (prinyal.options[prinyal.selectedIndex].value)!== 0) {
        comment.disabled = false; }
    else comment.disabled = true;
    }
</script>


Затем в хтмл коде: 
Код

<select name="status" selected="'.$row['status'].'" onSelect="return sendForm();">
        <option value="0">Change</option>
        <option value="offline.gif">Не активен</option>
        <option value="proceed.gif">В процессе</option>
        <option value="online.gif">Выполнено</option>
      </select>

так?

Это сообщение отредактировал(а) Sindrom - 24.9.2007, 14:36
PM MAIL   Вверх
dsCode
Дата 24.9.2007, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 565
Регистрация: 8.9.2007
Где: Saint-Petersburg

Репутация: 19
Всего: 26



Sindrom, да, все верно (за исключением синтаксиса (в коде, да и onChange, а не onSelect), но это не главное уже (вернее, тоже главное, но идея - главнее) - дальше доработаете.)

Код

<script type="text/javascript">
function sendForm () {
  var selectObj = document.getElementById('status');
  var comment = document.getElementById('comment');
  if (parseInt(selectObj.options[selectObj.selectedIndex].value) !== 0)) {
    comment.disabled = false;
  } else {
    comment.disabled = true;
  }
}
</script>


а вообще, если в onChange надо только дизаблить/enabl'ить текстовое поле, то можно inline сразу написать в самом селекте:

Код

<form id="statusform" name="statusform" method="POST" action="bla-bla"
  onSubmit="
    if (this.comment.disabled || this.comment.value != '') {
      alert('Укажите комментарий');
      return false;
    }
    return true;  
  "
>

<input type="text" id="comment" name="comment" disabled="true" />

<select name="status" id="status" selected="'.$row['status'].'"
  onChange="
    if (parseInt(this.options[this.selectedIndex].value) !== 0) {
      document.getElementById('comment').disabled = false;
    } else {
      document.getElementById('comment').disabled = true;
    }
    return true;
  "
>
  <option value="0">Change</option>
  <option value="offline.gif">Не активен</option>
  <option value="proceed.gif">В процессе</option>
  <option value="online.gif">Выполнено</option>
</select>

<input type="submit" name="submit" id="submit" value="Submit" />

</form>


Это сообщение отредактировал(а) dsCode - 24.9.2007, 15:17


--------------------
the .code inside
:my music
PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0567 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.