Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: использовать одну функцию на разные события
 
 автор: serjinio   (18.05.2009 в 20:04)   письмо автору
 
 

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

<form  method="post" action="">
<select  name="cat" id="cat" onchange="post_c(this)" >
<optgroup   label="Категория" >
<?php echo $option ?>
</optgroup>
</select>
</form>


function post_c(cat)
    {
        var div_text = document.getElementById('div_error');
        var selected = null;
        // Проверяем выбрана ли уже какая-то категория:
         if(selected !== null)
              {// Если выбрана, проверяем не текущая ли выбрана:
                  if(selected == cat.value){return;}// Если текущая уже выбрана 
            }
      selected = cat.value;// Если никакая не выбрана, или выбрана не текущая, ставим текущую.
    
request.open('POST', 'cat_p.php', true)
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
request.onreadystatechange = function() 
{
  if ( request.readyState !== 4 ) return;
  if ( !request.status || request.status == 200 || request.status == 304 || request.status == 0 ) 
    {     
        document.getElementById ('c').innerHTML = request.responseText;
    }
  else   { div_text.innerHTML = 'Ошибка запроса XMLHttpRequest'; }
}
request.send ('cat=' + selected);
 return;
}


подгружается форма ..с кнопкой добавить
<input type="text" value="" name="text"  size="33"/>
<input name="Кнопка" type="button"  value="Добавить">

Как на эту кнопку повесить обработчик чтобы приее нажатии данные из поля text отправлялись аяксом в функцию function post_c() возможно ли или надо писать отдельную функцию

  Ответить  
 
 автор: PAT   (18.05.2009 в 22:48)   письмо автору
 
   для: serjinio   (18.05.2009 в 20:04)
 

var selected = null;
        // Проверяем выбрана ли уже какая-то категория:
         if(selected !== null)
              {// Если выбрана, проверяем не текущая ли выбрана: 
                  if(selected == cat.value){return;}// Если текущая уже выбрана это НИКОГДА не выполнится
            } 
ONCANGE сработает именно тогда, когда произойдёт изменение (то самое change переводится как "изменить"). Если вы просто откроете список и не сделаете НОВОГО выбора, то функция вызываться не будет. Поэтому проверять изменение просто НЕ НАДО. НИКОГДА.

<input name="Кнопка" type="button"  value="Добавить">

Имена (элементов, классов, объектов, ЛЮБОЙ переменной...) и идентификаторы должны содержать только АНГЛИЙСКИЕ буквы, АРАБСКИЕ цифры и символ подчёркивания. Причём начинаться они должны ТОЛЬКО с буквы.


Функции для того и созданы, чтобы работать НЕОДНОКРАТНО и чтобы их можно было вызывать из РАЗНЫХ мест и по РАЗНЫМ событиям.
В данном случае при вызове из списка передавайте функции не сам список, а конкретно его значение - this.value
Соответственно, на кнопку вешайте onclick и передавайте функции value текстового поля.

[поправлено модератором]

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования