Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

Нужно в форме из одного поля - Submit после его заполнения (Muma)
Author Message
Muma
Guest





Карма: 388
   поощрить/наказать


PostPosted: Tue Mar 28, 2006 10:52 am (написано за 18 секунд)
   Post subject: Нужно в форме из одного поля - Submit после его заполнения
Reply with quote

Добрый день!

Есть форма только с одним полем (выбор даты).Сама дата выбирается из Календаря.
Было бы очень удобно чтобы Submit срабатывал сразу после смены даты в поле но...
Такой код не работает.
Quote:
<td>
    <input type="text" name="xlo_date" value=<?=$date_today?> onChange="javascript:this.form.submit()" >
    <input type="image" src="ew_calendar.gif" alt="Введите дату" onClick="popUpCalendar(this, this.form.xlo_date,'dd-mm-yyyy');return false;" >
</td>
Если руками изменяю значение поля то все нормально.
А вот если выбираю из Календаря то Submit не происходит .

Если кто знает как это сделать - подскажите pls.
Back to top
Г.О.
Участник форума



Joined: 22 Feb 2006
Posts: 378
Карма: 13
   поощрить/наказать

Location: Ленинград

PostPosted: Tue Mar 28, 2006 11:15 am (спустя 23 минуты; написано за 58 секунд)
   Post subject:
Reply with quote

onClick="popUpCalendar(this, this.form.xlo_date,'dd-mm-yyyy');return false;"

Зачем тут return false? Вот submit и не происходит.
Back to top
View user's profile Send private message
Muma
Guest





Карма: 388
   поощрить/наказать


PostPosted: Tue Mar 28, 2006 12:46 pm (спустя 1 час 31 минуту; написано за 2 минуты 29 секунд)
   Post subject:
Reply with quote

Г.О. wrote:
onClick="popUpCalendar(this, this.form.xlo_date,'dd-mm-yyyy');return false;"

Зачем тут return false? Вот submit и не происходит.
Без return false Календарь открывается и тут же закрывается не давая выбрать дату.
Back to top
Г.О.
Участник форума



Joined: 22 Feb 2006
Posts: 378
Карма: 13
   поощрить/наказать

Location: Ленинград

PostPosted: Tue Mar 28, 2006 12:53 pm (спустя 6 минут; написано за 27 секунд)
   Post subject:
Reply with quote

Ну, тогда после выбора даты в календаре, отсылать форму через submit().
Code (JavaScript): скопировать код в буфер обмена
document.getElementById( "id_form" ).submit();
Back to top
View user's profile Send private message
Muma
Guest





Карма: 388
   поощрить/наказать


PostPosted: Tue Mar 28, 2006 2:14 pm (спустя 1 час 20 минут; написано за 7 минут 17 секунд)
   Post subject:
Reply with quote

Г.О. wrote:
Ну, тогда после выбора даты в календаре, отсылать форму через submit().
Code (JavaScript): скопировать код в буфер обмена
document.getElementById( "id_form" ).submit();
Необходимо чтобы Submit происходил только после выбора даты в Календаре (а это возможно только если есть такой код return false ).
Интересно другое почему при наличии <input type="text" name="xlo_date" value=<?=$date_today?> onChange="javascript:this.form.submit()" > не срабатыввает onChange хотя воочию видно что первоначальное значение в поля xlo_date изменилось из Календаря. Если это поле изменять руками тогда все нормально - OnChange срабатывает. А вот изменение значение этого поля из Календаря не вызывает срабатывание OnChange. Вот что интересно ?
И как тогда заставить сработать OnChange?
Back to top
Г.О.
Участник форума



Joined: 22 Feb 2006
Posts: 378
Карма: 13
   поощрить/наказать

Location: Ленинград

PostPosted: Tue Mar 28, 2006 2:37 pm (спустя 23 минуты; написано за 1 минуту 39 секунд)
   Post subject:
Reply with quote

Потому что событие onChange срабатывает после действий ПОЛЬЗОВАТЕЛЯ, а не программы.
И уберите оттуда "javascript:"
Code (JavaScript): скопировать код в буфер обмена
onChange="this.form.submit()"
Back to top
View user's profile Send private message
Muma
Guest





Карма: 388
   поощрить/наказать


PostPosted: Wed Mar 29, 2006 4:54 pm (спустя 1 день 2 часа 16 минут; написано за 3 минуты 58 секунд)
   Post subject:
Reply with quote

Г.О. wrote:
Потому что событие onChange срабатывает после действий ПОЛЬЗОВАТЕЛЯ, а не программы.
И уберите оттуда "javascript:"
Code (JavaScript): скопировать код в буфер обмена
onChange="this.form.submit()"
Вот по поводу срабатывает после действий ПОЛЬЗОВАТЕЛЯ.
А как сделать чтобы onChange срабатывал после вообще изменения любым способом?
Такое в принципе возможно?
Back to top
Г.О.
Участник форума



Joined: 22 Feb 2006
Posts: 378
Карма: 13
   поощрить/наказать

Location: Ленинград

PostPosted: Wed Mar 29, 2006 5:08 pm (спустя 13 минут; написано за 2 минуты 15 секунд)
   Post subject:
Reply with quote

Обьясните, зачем в вашем случае это нужно?
Back to top
View user's profile Send private message
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Wed Mar 29, 2006 5:23 pm (спустя 15 минут; написано за 49 секунд)
   Post subject:
Reply with quote

Господа, может быть будете читать стандарты?
W3C wrote:
onchange = script [CT]
    The onchange event occurs when a control loses the input focus and its value has been modified since gaining focus. This attribute applies to the following elements: INPUT, SELECT, and TEXTAREA.
www.w3.org/TR/REC-html40/interact/scripts.html
Back to top
View user's profile Send private message
Г.О.
Участник форума



Joined: 22 Feb 2006
Posts: 378
Карма: 13
   поощрить/наказать

Location: Ленинград

PostPosted: Wed Mar 29, 2006 5:41 pm (спустя 17 минут; написано за 22 секунды)
   Post subject:
Reply with quote

Да, действительно — стандарты, это святое.
Back to top
View user's profile Send private message
Muma
Guest





Карма: 388
   поощрить/наказать


PostPosted: Thu Mar 30, 2006 12:12 pm (спустя 18 часов 30 минут; написано за 1 минуту 22 секунды)
   Post subject:
Reply with quote

WingedFox wrote:
Господа, может быть будете читать стандарты?
W3C wrote:
onchange = script [CT]
    The onchange event occurs when a control loses the input focus and its value has been modified since gaining focus. This attribute applies to the following elements: INPUT, SELECT, and TEXTAREA.
www.w3.org/TR/REC-html40/interact/scripts.html
Да все правильно.Я уже понял что только изменение руками (& мышью) вызывает событие OnChange - просто подскажите как добиться чтобы форма отправила на сервер значение INPUT . Но без отдельной кнопки 'SUBMIT' разумеется.

Я попробовал у второго инпута после события onClick вставить
onBlur="this.form.submit()" . Форма отправляет данные на Сервер но при этом новое значение из Календаря не вставляется в 'xlo_date'.

... ?
Back to top
Г.О.
Участник форума



Joined: 22 Feb 2006
Posts: 378
Карма: 13
   поощрить/наказать

Location: Ленинград

PostPosted: Thu Mar 30, 2006 12:21 pm (спустя 9 минут; написано за 2 минуты 24 секунды)
   Post subject:
Reply with quote

Quote:
Да все правильно.Я уже понял что только изменение руками (& мышью) вызывает событие OnChange
Нет, WingedFox и W3C намекают на то, что я ввел вас в заблуждение и onChange происходит не при изменении руками.
Оно происходит, после того, как элемент потерял фокус и если с того момента, когда он его получил, его значение изменилось.
В вашем случае не нужно вызывать onChange. В вашем случае достаточно выполнить то, что выполняет его обработчик. Всего то:
Code (JavaScript): скопировать код в буфер обмена
this.form.submit()
Back to top
View user's profile Send private message
zoomba
Guest





Карма: 388
   поощрить/наказать


PostPosted: Tue Jun 06, 2006 4:33 pm (спустя 2 месяца 7 дней 4 часа 12 минут; написано за 12 секунд)
   Post subject:
Reply with quote

° ТЮв ЪвЮ ЬЭХ, ШФШЮвг ЮСкпбЭШв ЯЮзХЬг ТЮЧЭШЪРХв ЮиШСЪР "ѕСкХЪв ЭХ ЯЮФФХаЦШТРХв ФРЭЭЮХ бТЮЩбвТЮ ШЫШ ЬХвЮФ"? АХзм ШФХв Ю бРСЬШвХ дЮаЬл. їЮвЮЬг звЮ Т бЪалвЮХ ЯЮЫХ ЧЭРзХЭШХ ЧРЯШблТРХвбп (Т $_POST['form_action'] ЯЮпТЫпХвбп ЧЭРзХЭШХ "country" ЯЮбЫХ ЯаШЭгФШвХЫмЭЮУЮ бРСЬШвР ЪЭЮЯЪЮЩ "submit").

<form name="fform" action="/fact.php">
<select onChange="document.fform.form_action.value=\'country\';fform.submit();" name="filter_customer_country">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
... Ш в.Ф.
</form>
Back to top
zoomba
Guest





Карма: 388
   поощрить/наказать


PostPosted: Tue Jun 06, 2006 4:34 pm (спустя 46 секунд; написано за 20 секунд)
   Post subject:
Reply with quote

Sorry за предыдущий пост...

А вот кто мне, идиоту объяснит почему возникает ошибка "Объект не поддерживает данное свойство или метод"? Речь идет о сабмите формы. Потому что в скрытое поле значение записывается (в $_POST['form_action'] появляется значение "country" после принудительного сабмита кнопкой "submit").

<form name="fform" action="/fact.php">
<select onChange="document.fform.form_action.value=\'country\';fform.submit();" name="filter_customer_country">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
... и т.д.
</form>
Back to top
Г.О.
Участник форума



Joined: 22 Feb 2006
Posts: 378
Карма: 13
   поощрить/наказать

Location: Ленинград

PostPosted: Tue Jun 06, 2006 4:47 pm (спустя 12 минут; написано за 1 минуту 3 секунды)
   Post subject:
Reply with quote

Quote:
document.fform.form_action.value=\'country\';fform.submit();
Сначала к форме через document.fform обращаетесь, потом прямо через fform, вы уж выберите что-нибудь одно. Вдруг заработает.
Back to top
View user's profile Send private message
AKS
Участник форума



Joined: 28 Dec 2005
Posts: 1174
Карма: 102
   поощрить/наказать


PostPosted: Tue Jun 06, 2006 4:54 pm (спустя 6 минут; написано за 1 минуту 38 секунд)
   Post subject:
Reply with quote

zoomba
1. В приведенном примере нет элемента form_action, которому Вы пытаетесь присвоить новое значение.
2. Обратный слэш перед и после country ненужен.
Back to top
View user's profile Send private message Send e-mail
Г.О.
Участник форума



Joined: 22 Feb 2006
Posts: 378
Карма: 13
   поощрить/наказать

Location: Ленинград

PostPosted: Tue Jun 06, 2006 5:01 pm (спустя 7 минут; написано за 2 минуты 27 секунд)
   Post subject:
Reply with quote

Quote:
объяснит почему возникает ошибка "Объект не поддерживает данное свойство или метод"?
Что непонятного? Данная ошибка возникает потому что какой-то объект не поддерживает какое-то свойство или метод, а его хотят у него получить.
Собственно первым делом нужно выяснить какой именно объект и на какое свойство ругается. Выясняется это элементарным дебагом.
Back to top
View user's profile Send private message
zoomba
Guest





Карма: 388
   поощрить/наказать


PostPosted: Tue Jun 06, 2006 5:24 pm (спустя 22 минуты; написано за 7 минут 16 секунд)
   Post subject:
Reply with quote

Короче вот вам подробности:

1. КОД, ФОРМИРУЮЩИЙ ЭЛЕМЕНТ:
Code (php): скопировать код в буфер обмена
$filter_customer_country = '<select onChange="FilterChanged(\'country\');" name="filter_customer_country">';
                        $SQL = "select distinct * from ama_country";
                $result=mysqlq($SQL);
            while ($rez=mysql_fetch_array (www.php.net/mysql_fetch_array)($result,MYSQL_ASSOC))
                {
                        $filter_customer_country .='<option value="'.$rez['CountryID'].'">'.$rez['CountryName'].'</option>';
                }
                        $filter_customer_country .= '</select>';
2. JAVASCRIPT-ФУНКЦИЯ И ШАБЛОН ФОРМЫ (ТОЧНЕЕ ЕЕ ЧАСТИ, {%filter_book_type%} программно заменяется на значение переменной $ilter_book_type, замену я опустил, но из исходного кода страницы видно, что все нормально заменилось, с экшеном формы тоже самое)
Code (html): скопировать код в буфер обмена
<script> (december.com/html/4/element/script.html)
function FilterChanged(filter){
         document.fform.form_action.value = filter;
         document.fform.submit();
}
</script>

<form (december.com/html/4/element/form.html) action="{%FORM_URL%}" name="fform" method="post"> (december.com/html/4/element/.html)
<table (december.com/html/4/element/table.html) width="90%" border="0" class="amatable"> (december.com/html/4/element/.html)
  <tr> (december.com/html/4/element/tr.html)
   <td> (december.com/html/4/element/td.html)<div (december.com/html/4/element/div.html) align="right"> (december.com/html/4/element/.html)<strong> (december.com/html/4/element/strong.html)</strong></div></td>
   <td (december.com/html/4/element/td.html) colspan="2"> (december.com/html/4/element/.html)&nbsp;</td>
  </tr>

 <tr> (december.com/html/4/element/tr.html)
    <td> (december.com/html/4/element/td.html)<div (december.com/html/4/element/div.html) align="right"> (december.com/html/4/element/.html)</div></td>
    <td (december.com/html/4/element/td.html) colspan="2"> (december.com/html/4/element/.html){%filter_book_type%}</td>
    </tr>
  <tr> (december.com/html/4/element/tr.html)

... 

  <tr> (december.com/html/4/element/tr.html)
    <td (december.com/html/4/element/td.html) colspan="3"> (december.com/html/4/element/.html)<div (december.com/html/4/element/div.html) align="center"> (december.com/html/4/element/.html)  <input (december.com/html/4/element/input.html) type="submit" name="submit" value=" "> (december.com/html/4/element/.html)
    <input (december.com/html/4/element/input.html) type="hidden" value="" name="form_action"> (december.com/html/4/element/.html)
    </td>
    </tr>
</table>
</form>
3. СМОТРИМ СООБЩЕНИЯ ОБ ОШИБКАХ И ЗНАЧЕНИЯ $_POST[] И ПРИХОДИМ К ВЫВОДУ, ЧТО ОШИБКА ВОЗНИКАЕТ ПРИ ПОПЫТКЕ ВЫПОЛНИТЬ САБМИТ ФОРМЫ ИЗ ЯВА-СКРИПТА. Почему?
Back to top
zoomba
Guest





Карма: 388
   поощрить/наказать


PostPosted: Tue Jun 06, 2006 5:27 pm (спустя 3 минуты; написано за 49 секунд)
   Post subject:
Reply with quote

Тьфу! Хтмл не тот кусок привел...
Вот нужный:
Code (html): скопировать код в буфер обмена
  <tr> (december.com/html/4/element/tr.html)
    <td> (december.com/html/4/element/td.html)<div (december.com/html/4/element/div.html) align="right"> (december.com/html/4/element/.html)Страна Клиента: </div></td>
    <td (december.com/html/4/element/td.html) colspan="2"> (december.com/html/4/element/.html){%filter_customer_country%}</td>
    </tr>
  <tr> (december.com/html/4/element/tr.html)
И заменяется так: {%filter_customer_country%} заменяется на $filter_customer_country
Back to top
Г.О.
Участник форума



Joined: 22 Feb 2006
Posts: 378
Карма: 13
   поощрить/наказать

Location: Ленинград

PostPosted: Tue Jun 06, 2006 5:41 pm (спустя 14 минут; написано за 1 минуту 28 секунд)
   Post subject:
Reply with quote

У вас выдается ошибка javascript. Значит нужно смотреть не php, а html+javascript.
Запустите этот сценарий и смотрите html-код в браузере. Или же закиньте его сюда (html-код, без всяких {%filter...}, $filter_...)
Back to top
View user's profile Send private message
AKS
Участник форума



Joined: 28 Dec 2005
Posts: 1174
Карма: 102
   поощрить/наказать


PostPosted: Tue Jun 06, 2006 5:44 pm (спустя 3 минуты; написано за 43 секунды)
   Post subject:
Reply with quote

Code (any language): скопировать код в буфер обмена
function FilterChanged(filter){
         document.fform.form_action /* : undefinedElement! */.value = filter;
         document.fform.submit();
}
Back to top
View user's profile Send private message Send e-mail
Г.О.
Участник форума



Joined: 22 Feb 2006
Posts: 378
Карма: 13
   поощрить/наказать

Location: Ленинград

PostPosted: Tue Jun 06, 2006 5:51 pm (спустя 7 минут; написано за 35 секунд)
   Post subject:
Reply with quote

AKS, да нет - есть там "form_action".
Back to top
View user's profile Send private message
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Tue Jun 06, 2006 5:59 pm (спустя 7 минут; написано за 1 минуту 4 секунды)
   Post subject:
Reply with quote

Предлагаю закрыть эту дискуссию, т.к. человеку задавщему сей вопрос прямой путь к истокам.
RTFM, в общем.
Back to top
View user's profile Send private message
zoomba
Guest





Карма: 388
   поощрить/наказать


PostPosted: Wed Jun 07, 2006 1:07 pm (спустя 19 часов 8 минут; написано за 3 минуты 21 секунду)
   Post subject:
Reply with quote

Так никто и не ответил. К RTFM я и сам могу послать... Тем более, что я его (мануал) читал... А ларчик открывался просто: НЕЛЬЗЯ для кнопки submit устанавливать параметер name равным "submit". Переименовываем кнопку и все работает... Всем спасибо за желание помочь.

P.S.: Первоначально кнопка должна была выглядеть так: <input type="submit" name="fsubmit" value="Формировать отчет">

P.P.S.: Мдя... Вот так вот случайная опечатка и 2 часа убито рабочего времени :)
Back to top
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML