С Новым годом! Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/29: Рейтинг темы: голосов - 29, средняя оценка - 4.83
4 / 4 / 1
Регистрация: 18.09.2012
Сообщений: 38

javascript две кнопки и один обработчик

11.04.2013, 01:34. Показов 5760. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть один обработчик Proverka2() и две кнопки url и url_ftp. Как сделать так, что бы в зависимости от того какая кнопка нажата обработчик обработал первую или вторую кнопку(сработало первое или второе условие). Два обработчика писать нет смысла т.к. все элементарно. Перерыл пол интернета - наверное просто не понимаю. Предполагаю что надо сравнить name кнопок, вопрос чем и как?

JavaScript
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<body>
    
        <form name="adres">
            <table>
                    <tr>
                        <td align="right">Введите e-mail:<input type="text" name="email" /></td>
                        <td><input type="button" value="Start" onclick="Proverka()" /></td>
                        
                    </tr>
                    <tr>
                        <td align="right">Введите url:<input type="text" name="url" value="https://mail.yandex.ua/"/></td>
                        <td><input type="button" value="Start" onclick="Proverka2()" /></td>
                    </tr>
                    <tr>
                        <td align="right">Введите url:<input type="text" name="url_ftp" value="ftp://ftp.cdrom.com" /></td>
                        <td><input type="button" value="Start" onclick="Proverka2()" /></td>
                    </tr>
            </table>
        </form>
    <script type="text/javascript">
        function Proverka() {
            var reg = /^\D{1}[a-z0-9-]{2,9}\@{1}([a-z0-9-]{1,10}\.){1,2}\D{2,3}$/;
            var str = document.adres.email.value;
            var index = str.search(reg);
            if (index != -1) {
                alert(str);
            }
            else {
                alert("некорректный ввод!");
            }
        }
        function Proverka2() {
            var reg = /^((https?|ftp)\:\/\/)?([a-z0-9-]{1,10}\.){1,2}\D{2,3}$/;
 
 
            if (document.adres.url.value) {
                var str = document.adres.url.value;
                
            }
            //else var str = document.adres.url_ftp.value
            
            if (document.adres.url_ftp.value) {
                var str = document.adres.url_ftp.value
            }
 
            var index = str.search(reg);
            if (index != -1) {
                alert(str );
            }
            else {
                alert("Некорректный ввод!");
            }
        }
    </script>
 
 
</body>
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.04.2013, 01:34
Ответы с готовыми решениями:

Не срабатывает обработчик нажатия кнопки
&lt;ul&gt; &lt;li&gt;&lt;button id=&quot;about_me&quot; onckick=&quot;change()&quot;&gt;About me&lt;/button&gt;&lt;/li&gt; &lt;li&gt;&lt;button&gt;Skills&lt;/button&gt;&lt;/li&gt; ...

Повторная отправка (дублирование) формы (submit, POST) добавив обработчик на JavaScript
В основном все начинающие програмисты борются с проблемой повторной отправки формы. Ну скажем после нажатия клавиши: &quot;F5&quot;. А меня...

Как назначить один обработчик для всех элементов
На странице есть множество HTML элементов, для каждого из которых заданы аттрибуты: ...id=&quot;el_1&quot;...

15
Дзен-программист
 Аватар для xenohunter
122 / 87 / 16
Регистрация: 10.04.2013
Сообщений: 253
11.04.2013, 01:55
ruslan_net, name кнопки аргументом передавать в функцию:

HTML5
1
<input type="button" value="Start" onclick="Proverka2('url')" />
A в функции использовать аргумент как переменную:

JavaScript
1
2
3
4
5
6
// buttonName - это и есть переданное имя
function Proverka2(buttonName) {
    if (buttonName === 'url') {
        /* ... */
    }
}
0
4 / 4 / 1
Регистрация: 18.09.2012
Сообщений: 38
11.04.2013, 13:43  [ТС]
К сожалению неработает
Миниатюры
javascript две кнопки и один обработчик  
0
Дзен-программист
 Аватар для xenohunter
122 / 87 / 16
Регистрация: 10.04.2013
Сообщений: 253
11.04.2013, 13:51
ruslan_net, можете скинуть весь код, как он сейчас выглядит?
0
 Аватар для Drygba
512 / 454 / 119
Регистрация: 17.02.2012
Сообщений: 1,032
Записей в блоге: 1
11.04.2013, 14:14
Цитата Сообщение от ruslan_net Посмотреть сообщение
К сожалению не работает
HTML5
1
2
3
4
5
6
7
8
<tr>
            <td align="right">Введите url:<input type="text" name="url" value="https://mail.yandex.ua/"/></td>
            <td><input type="button" value="Start" name="YANDEX" onclick="Proverka2(this.name)" /></td>
        </tr>
        <tr>
            <td align="right">Введите url:<input type="text" name="url_ftp" value="ftp://ftp.cdrom.com" /></td>
            <td><input type="button" value="Start" name="FTP" onclick="Proverka2(this.name)" /></td>
        </tr>
инпутам добавляем атрибут name, а в функцию добавляем аргумент name. При вызове функции в нее передаем имя кнопки onclick="Proverka2(this.name)"
JavaScript
1
2
3
4
5
function Proverka2(name) {
        if (name === 'YANDEX') {
            //чего то
        }
        else //чего то
так понятно?
xenohunter, повторение мать учения (с)
1
Дзен-программист
 Аватар для xenohunter
122 / 87 / 16
Регистрация: 10.04.2013
Сообщений: 253
11.04.2013, 14:18
Drygba, я-то думал, что надо передавать имя соседнего текстового input'а. А так да, согласен, this.name.
0
 Аватар для Drygba
512 / 454 / 119
Регистрация: 17.02.2012
Сообщений: 1,032
Записей в блоге: 1
11.04.2013, 14:21
передавать можно что хочешь, главное обработать потом корректно
1
Дзен-программист
 Аватар для xenohunter
122 / 87 / 16
Регистрация: 10.04.2013
Сообщений: 253
11.04.2013, 14:28
Drygba, а, вы про то, что я else не дописал?
0
4 / 4 / 1
Регистрация: 18.09.2012
Сообщений: 38
11.04.2013, 15:47  [ТС]
Все отлично работает.

Добавлено через 2 минуты
xenohunter, тоже спасибо, не вижу где можно плюсик нажать
0
Дзен-программист
 Аватар для xenohunter
122 / 87 / 16
Регистрация: 10.04.2013
Сообщений: 253
11.04.2013, 16:09
ruslan_net, мне пока что нельзя, я ещё слишком зелёный: меньше двух суток на форуме.
1
11.04.2013, 16:11

Не по теме:

Цитата Сообщение от xenohunter Посмотреть сообщение
а, вы про то, что я else не дописал?
я о том что написал тоже самое что и вы

0
11.04.2013, 16:13

Не по теме:

Drygba, а, понял!

0
4 / 4 / 1
Регистрация: 18.09.2012
Сообщений: 38
02.05.2013, 18:26  [ТС]
В продолжение данного вопроса у меня появился подобный.
Пробую написать тест: данные берутся из массива надо сделать выбор ответа и по нажатию кнопки надо я пытаюсь передать какой радибатон был нажат
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function next()
 {
   var j=0;
   // var radios1 = document.test.ind;
                     document.write(test[ind][0] + '<br/>' +
                                        '<input type="radio" name="vibor_otveta0" value="0" checked="checked"/>' + test[ind][1] + '<br/>' +
                                        '<input type="radio" name="vibor_otveta1" value="1" />' + test[ind][2] + '<br/>' +
                                        '<input type="radio" name="vibor_otveta2" value="2" />' + test[ind][3] + '<br/>' +
                                        '<input type="radio" name="vibor_otveta3" value="3"/>' + test[ind][4] + '<br/>' +
                                        //'<input type="button" value="OK" onclick="next()" /><br/><br/>');
                                        '<input type="button" value="OK" onclick="next_vivod(this.name)" /><br/><br/>');
                                     
                     ind++;
                     }  
                                         
                                         
                                                           
}
 
function next_vivod(name){
    
    alert(name);
               ......
}
как выше мне здесь отвечали, но к сожалению name не передается.
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
02.05.2013, 21:54
<input type="button" value="OK" onclick="next_vivod (this.name)" />

в данном случае this - это кнопка <input type="button">, на которую вы нажали
у неё никакого атрибута name не определено, вот и получаете пустой alert
---------

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

у вас же 4 кнопки с разными именами (от vibor_otveta0 до vibor_otveta3)
в этом случае пользователь может отметить все эти 4 кнопки и причём снять отметку уже НЕ СМОЖЕТ
попробуйте сами
HTML5
1
2
3
4
5
<input type="radio" name="vibor_otveta0" value="0" checked="checked" />
<input type="radio" name="vibor_otveta1" value="1" />
<input type="radio" name="vibor_otveta2" value="2" />
<input type="radio" name="vibor_otveta3" value="3" />
<br>фигня получается, правда?
чтобы можно было выбрать из группы всего ОДИН ответ, надо прописывать радиокнопкам ОДИНАКОВЫЕ имена,
а чтобы получить значение value отмеченной радиокнопки, надо всё это заключить в форму и передать эту самую форму вашей функции, вот так:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<form>
<input type="radio" name="ABC" value="0" checked="checked" />
<input type="radio" name="ABC" value="1" />
<input type="radio" name="ABC" value="2" />
<input type="radio" name="ABC" value="3" />
<input type="button" value="OK" onclick="myFunc (this.form)" />
</form>
<script>
function myFunc (frm)
{
for (var j = 0, lj = frm.ABC.length; j < lj; j++) if (frm.ABC [j].checked) break;
alert (frm.ABC [j].value);
}
</script>
1
4 / 4 / 1
Регистрация: 18.09.2012
Сообщений: 38
03.05.2013, 00:18  [ТС]
В самом начале Вы мне тут давали код там именно name передавался в функцию?
Это как бы первый вопрос, а второе я ж из массива вывожу вопросы для теста через document.write, затем хотел получить какую кнопку нажали, затем опять повторить тоже самое пока все не выведу из массива и у меня это не получается. Может тут нужно вообще делать по другому? Бьюсь ничего не получается.
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
03.05.2013, 04:00
Цитата Сообщение от ruslan_net Посмотреть сообщение
В самом начале Вы мне тут давали код
где это "тут" и когда это "в самом начале"?
------

прочитайте здесь раздел ВТОРОЕ про метод write ()

когда прочитаете, надеюсь, поймёте, что использовать этот метод можно ОДИН раз, при формировании страницы
потом, когда страница полностью сформировалась (и даже пользователь чего-то на ней покликал), методом write () пользоваться НЕЛЬЗЯ, ибо вся страница будет уничтожена
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.05.2013, 04:00
Помогаю со студенческими работами здесь

Как отловить обработчик события кнопки в инспекторе кода браузера?
Подскажите пожалуйста, есть ли возможность отловить обработчик события нажатия кнопки в инспекторе кода браузера? &quot;Инспектор...

Сделать четыре кнопки, сегментировать их на 30 делений каждую. При нажатии кнопки закрашивался один её сегмент.
Привет. Постигаю азы, спать/есть не могу, хочу быть среди тех кто умеет делать &quot;матрицу&quot;)) Начитался разных самоучителей,...

Цикл, две картинки и две кнопки. JQuery
Как создать файл 3.html и добавить два рисунка, невидимые при загрузке страницы, и две кнопки. При нажатии на одну кнопку должно в цикле...

Обработчик нажатия кнопки
Добрый день! У меня есть такая проблема, связанная с обработчиком нажатия на кнопку. Я вывожу циклом n - ое количество комментариев ...

Много форм, один обработчик
Люди добрые помогите! Почему скрипт: &lt;script&gt; function calc(par){ type = document.cl_form.type.value; amount =...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru