Форум программистов, компьютерный форум, киберфорум
JavaScript: RegExp
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
2 / 2 / 1
Регистрация: 16.10.2009
Сообщений: 112
1

Где-то пропускаю ошибку, скрипт не дорабатывает

20.10.2014, 08:26. Показов 578. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Вот эта конструкция должна посчитать количество отмеченных чекбоксов (и считает), и если оно менее, допустим, 2, дать отлуп и не отправлять форму на сервер. То есть, вернуть false при сабмите формы. Так вот, не возвращает. Скажите, где я слажал?
Спасибо.
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<html>
    <head>
        <meta charset='utf-8'>
        <script type = "text/javascript">
        window.onload = function()
    {
        document.getElementById("Myform").onsubmit = function() 
        {
       isCountCheck();
        }
        function isCountCheck() 
        {
        var i, len, inputs = document.f.getElementsByTagName("input");
        var count = 0;
            for (i = 0, len = inputs.length; i < len; i++) 
            {
                if (inputs[i].type === "checkbox" && inputs[i].checked)
                {
                count+=1;
                }
            }
            if (count<2)
            alert("Отлуп определенного содержания");
        return false
        }   
    }
        
        </script>
    </head>
    <form action="anketa.php" method="post" name="f" id="Myform">
    
    С++<input type="checkbox" name="checkbox[]" id="С" value="C++"><br>
    JavaScript<input type="checkbox" name="checkbox[]" id="JS" value="JavaScript"><br>
    Perl<input type="checkbox" name="checkbox[]" id="Perl" value="Perl"><br>
    <input type="checkbox" name="checkbox[]" id="PHP" value="PHP"><br><br>
    <input type="submit" name="submit" id="countChecked" value="Отправить"> 
    </form>
    <a href="script.php">очистить</a><br><br><br>
 
   </body>
</html>
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.10.2014, 08:26
Ответы с готовыми решениями:

Скрипт не дорабатывает до конца
Подскажите, братья по разуму, что делать? Ситуация следующая Создан АСП-компонент на Делфи...

Не дорабатывает рекурсия в деструкторах
Имеем иерархию объектов и объект-контейнер. Объекты содержащиеся в контейнере при удалении...

Кодировка utf-8 искажается, когда пропускаю через функцию
Кодировка веб-странички - utf-8 Кодировка БД - utf8_general_ci Когда вывожу на страничку текст...

Где разместить скрипт?
Господа помогите пожалуйста разобраться: Есть php скрипт, отправляет внешние запросы по средством...

7
413 / 378 / 220
Регистрация: 18.07.2014
Сообщений: 1,259
20.10.2014, 09:41 2
Дима Артёмов,

Javascript
1
2
3
4
 document.getElementById("Myform").onsubmit = function() 
        {
       return isCountCheck();
        }
1
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
20.10.2014, 09:46 3
Дима Артёмов, для того, чтоб отменить событие submit формы, вместо "return false", используйте preventDefault():
Javascript
1
2
3
4
5
6
7
8
9
10
function init(){
    document.f.addEventListener('submit', function(e){
        var chbx = this.querySelectorAll('input[type="checkbox"]'),
            cnt = [].filter.call( chbx, function( el ) {
            return el.checked;
        }).length;
        if(cnt < 2) e.preventDefault(); // отменяем submit формы
    }, false);
}
window.addEventListener('load', init, false);
1
413 / 378 / 220
Регистрация: 18.07.2014
Сообщений: 1,259
20.10.2014, 09:53 4
Lazy_Den,

1) preventDefault() - это метод из jquery, а ТС его не используется
2) preventDefault от return false отличается только тем что, return false - не дает событию всплывать.
preventDefault актуален допустим при клике на элементе, когда вы не хотите мешать отработке события на родительских элементах.
submit - это событие только формы, он не всплывает. так что для него безразлично что использовать preventDefault или return false
0
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
20.10.2014, 09:57 5
whiteapps, сделаем проще... Вот вариант с pareventDefault, а вот тот же, но с return false. Сразу смотрим, что jQuery не подключен и открываем для себя то, что с return false, оно таки не работает, как хотелось бы..
1
whiteapps
20.10.2014, 10:07
  #6

Не по теме:

Lazy_Den, пойду РТФМить :read:

0
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
20.10.2014, 10:19 7
Цитата Сообщение от whiteapps Посмотреть сообщение
пойду РТФМить
Тут не нужно особо углубляться в манулы В случае с формой, событие происходит на кнопке (в объекте события заметим, что "explicitOriginalTarget" - явная первоначальная цель - именно кнопка). И вы сами правильно сказали, что preventDefault предотвращает всплытие, а всплытие события от кнопки, приходится как раз на форму. ))

Добавлено через 5 минут
P.S. По своему ответу на основной вопрос - что-то я с утра перемудрил. ))

Javascript
1
var cnt = this.querySelectorAll('input:checked').length; // сразу количество отмеченых
0
2 / 2 / 1
Регистрация: 16.10.2009
Сообщений: 112
20.10.2014, 11:41  [ТС] 8
Всем спасибо! Век живи- век учись.
0
20.10.2014, 11:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.10.2014, 11:41
Помогаю со студенческими работами здесь

Где располагать скрипт
Господа, а есть разница, где располагать теги &lt;script&gt;&lt;/script&gt; - в &lt;head&gt; или &lt;body&gt;? И есть ли...

Где можно скрипт?
где cкачать NestedSets.pm ? Перл скрипт?

Где можно скачать скрипт
сабж! скажите сайт, а то лазил не нашёл /' border='0' style='vertical-align:middle' alt='' /&gt;

Где нужно вставить скрипт?
Где нужно вставить скрипт чтобы снег падал только на фоне сайта. Возможно есть плагин который...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru