Запретить выполнение функций
Здравствуйте.
Есть такой скрипт: (function($) { $(function() { $('.form').each(function() { var form = $(this), btn = form.find('.submit'); form.find('.required').addClass('empty_field'); // Функция проверки полей формы function checkInput() { form.find('.required').each(function() { if ($(this).val() != '') { $(this).removeClass('empty_field'); } else { $(this).addClass('empty_field'); } }); } // Функция подсветки незаполненных полей function lightEmpty() { form.find('.empty_field').css({ 'border-color': '#d8512d' }); setTimeout(function() { form.find('.empty_field').removeAttr('style'); }, 1500); } setInterval(function() { checkInput(); var sizeEmpty = form.find('.empty_field').size(); if (sizeEmpty > 0) { if (btn.hasClass('disabled')) { return false } else { btn.addClass('disabled') } } else { btn.removeClass('disabled') } }, 500); btn.click(function() { if ($(this).hasClass('disabled')) { lightEmpty(); return false } else { form.submit(); } }); }); }); })(jQuery); Он проверяет заполненность полей, а заодно, при пустых полях, добавляет к кнопке класс disabled. Идем далее. Есть и такой скрипт: http://jsfiddle.net/jDYdH/2/. Который запрещает клики. Мне нужно их объединить. Чтобы, пока не заполнены поля (т. е. на кнопке стоит класс disabled), при нажатии на кнопку ничего не происходило, кроме подсветки незаполненных полей. Как я понял, за это отвечает вот эта строчка из второго примера: $('.disabled').off('click'); Так вот, вопрос. В какое место верхнего кода вставить эту строчку, чтобы получилось так, как мне надо? |
Объясню проще.
На кнопку отправки формы (.submit), помимо вышеуказанного скрипта повешен еще один скрипт. Как сделать, чтобы этот «еще один скрипт» не выполнялся при клике, пока на кнопке стоит дополнительный класс disabled? А, как только этот класс удалится с помощью первого скрипта (после заполнения всех полей), можно было выполнить второй скрипт. |
Потому что надо вешать не на onclick, а на onsubmit. Что вам, что "тому скрпту". И помимо("вместо" на самом деле) класса "disabled" ставить кнопке атрибут "disabled". Тогда если кнопка disabled никакого submit в принципе не пройдёт.
Умные люди придумали стандарт html, пользуйтесь им, а не лепите говновелосипеды. |
Цитата:
Можно проще. Сделать изменения в том втором скрипте, который привязан к этой кнопке. Схематично так: Если у <button> класс "disabled", то скрипт не выполняется. Если у <button> НЕТ класса "disabled", то скрипт выполняется. ... И дальше идет сам скрипт. ... В JS я плохо понимаю, поэтому весь вопрос в том, как, вышеприведенный схематичный пример написать на JS? |
Если у кнопки дизаблед ее считайте вообще нет. Так понятно? Никакие клики-шмики, никаких субмитов - ничего не будет происходить пока кнопка запрещена.
|
Следовательно когда "та функция" снимет disabled то юзер на конец то сможет ее нажать. Если сей факт как-то отражается в интерфейсе и юзер не дебил - он нажмет.
Короче говоря "другой скрипт" вам не нужен, ему нечего запрещать, все уже запрещено до него. Вам же с первого раза об этом написали выше. |
Кстати, в FF если единственный субмит на форме дизаблед, вы даже из скрипта не сможете нажать form.submit()
Ну да, а вот если вам не нужен субмит, а надо его перехватить и отправить скажем по xmlhhtp, то на субмит вешается это самое и как только кнопка раздизаблена и юзер кликнул золотую рыбку - оно самое и произойдет. |
Цитата:
Поэтому, все «клики-шмики» работают. Если вы и комментатор выше имели в виду, что в самом скрипте надо заменить добавление класса "disabled" на добавление атрибута "disabled", то я с радостью, но не знаю как. Скрипт, который добавляет класс в первом посте. Если поможете, буду благодарен. |
Но тут еще другой вопрос.
Этот скрипт для того и создан, чтобы при нажатии на кнопку, при незаполненных полях, их рамка подсвечивалась красным. Но если кнопку вообще отключить, то этого не будет происходить. Собственно, вот живой пример: http://novi.co/test/bionica/ |
Цитата:
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 11:21. |