Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.07.2011, 16:06
Mik Mik вне форума
Новичок на форуме
Отправить личное сообщение для Mik Посмотреть профиль Найти все сообщения от Mik
 
Регистрация: 27.07.2011
Сообщений: 4

Как сделать реакцию на изменение любого элемента формы.
Привет народ.

У меня есть форма с кучей полей. По кнопке все поля ajax'яться на сервер и по ним считается цена товара. Потом цена записывается в поле, чтобы юзер видел и становиться активна кнопка 'заказать'. Я хочу приделать некий скрипт на изменении любого поля формы, чтобы кнопка 'заказать' гасла(так как цена естественно будет другая).

Как сделать реакцию на изменение любого элемента формы?

Запихивать в onchange каждого элемента формы вызов нужной функции, это паталогическое рукоблудие(input
'ов очень много), должно быть какое-то более простое решение.

Возможно тема уже обсуждалась, но я не представляю, как объяснить проблему поиску. Вбивал вопрос как есть - ничего не нашел...

Ответить с цитированием
  #2 (permalink)  
Старый 27.07.2011, 16:50
Mik Mik вне форума
Новичок на форуме
Отправить личное сообщение для Mik Посмотреть профиль Найти все сообщения от Mik
 
Регистрация: 27.07.2011
Сообщений: 4

Нашел более или менее приличное решение:
http://api.jquery.com/change/

Но все равно не айс.
Странно что не сделали onchange для все формы
Ответить с цитированием
  #3 (permalink)  
Старый 27.07.2011, 16:57
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

попробуй на всю форму change обработчик повесить

щас намучу пример
Пример: На Mootools
<form id="a">
    <input><select><option></option><option>kjkj</option></select>
</form>
<button id="b" style="display:none">отправить</button>

<script src="http://yandex.st/mootools/1.3.1/mootools.min.js"></script>

<script>
var b  = $("b").style;

$("a").addEvent("change", function(){
    var ok = true;

    this.getChildren().each(
        function(a,b,c){ 
            if( a.value.length === 0 ) ok = false;
        });

    
    b.display = ok ? "block" : "none";  
})
</script>


// по изменению формы
$("a").addEvent("change", function(){
    var ok = true;

// проходимся по детям.
// если один из детей пуст - форма забракована.
    this.getChildren().each(
        function(a,b,c){ 
            if( a.value.length === 0 ) ok = false;
        });

    
    $("b").style.display = ok ? "block" : "none";  
})

Последний раз редактировалось melky, 27.07.2011 в 17:24.
Ответить с цитированием
  #4 (permalink)  
Старый 28.07.2011, 08:52
Mik Mik вне форума
Новичок на форуме
Отправить личное сообщение для Mik Посмотреть профиль Найти все сообщения от Mik
 
Регистрация: 27.07.2011
Сообщений: 4

В конечном счете сделал так:
function formOnChange()
{
disableSendButtons(true);
}
jQuery("#frame-params").bind("change", formOnChange);

#frame-params - id формы
вроде работает
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сделать fullscreen -=1100=- Общие вопросы Javascript 8 30.07.2012 09:53
Как сделать так, чтобы при сабмите формы напечатанный текст не исчезал? Athlet Общие вопросы Javascript 1 18.07.2010 02:44
как сделать выпадающий список, чтобы второй зависил от значения первого???? zsaz jQuery 2 16.07.2010 20:12
HTML5 Как сделать, чтобы можно было двигать картинку мышью? Бобр Общие вопросы Javascript 2 18.06.2010 21:22
Как сделать вкладку с 'плюсами и минусами'??? Monopolist Элементы интерфейса 2 05.08.2009 14:07