Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   addEventListener и onclick (https://javascript.ru/forum/events/52012-addeventlistener-i-onclick.html)

Jughead 30.11.2014 13:29

addEventListener и onclick
 
Есть форма, которая отправляется с помощью <input type="submit">. Но отправка не нужна, поэтому
var form = document.getElementById('formID');
form.onsubmit = function () {
return false;
}

код работает, форма не отправляется.
var form = document.getElementById('formID');
form.addEventListener(function() {
return false;
});

уже не работает и страница обновляется при нажатии на кнопку. Почему?

danik.js 30.11.2014 14:03

Цитата:

Сообщение от Jughead
Почему?

А почему должно быть иначе?

krutoy 30.11.2014 14:14

danik.js,
А тебя разве спрашивали почему должно быть так, или иначе? Отвечай на поставленный вопрос, если знаешь, а не разводи демагогию. Я вот не знаю, например, но я и не суюсь. А ты, стало быть знаешь, раз с такими понтами ворвался в тему?

danik.js 30.11.2014 14:28

krutoy, у меня к тебе вопрос:
У меня на столе лежит кнопочка. Почему, когда я ее нажимаю, не происходит пуска ядерных ракет?

Отвечай, сцуко, на поставленный вопрос и не разводи демагогию.

krutoy 30.11.2014 14:46

Цитата:

Сообщение от danik.js
У меня на столе лежит кнопочка. Почему, когда я ее нажимаю, не происходит пуска ядерных ракет?

Потому что твоя кнопочка не имеет никакого отношения к пуску ядрных ракет. Продолжай свою цепочку аналогий.

danik.js 30.11.2014 14:54

Это почему? Ракеты запускаются кнопкой же! У меня точно такая же кнопка. Так почему она не работает?

krutoy 30.11.2014 15:13

danik.js,
Короче, я пришел к тому, что это кривизна в реализации addEventListener на уровне языка. Он не только этим плох. Надо избегать этого говна, по-возможности.

devote 30.11.2014 15:13

Цитата:

Сообщение от Jughead
form.addEventListener(function() {

form.addEventListener('submit', function(e) {
  e.preventDefault();
}, false);

devote 30.11.2014 15:14

Цитата:

Сообщение от krutoy
что это кривизна в реализации addEventListener на уровне языка.

и в чем же кривизна?

krutoy 30.11.2014 15:15

devote,
Оно не работает. Я это в првую очередь проверил, тоже хотел написать.

devote 30.11.2014 15:17

Цитата:

Сообщение от krutoy
Оно не работает.

кто сказал что не работает? Если вы не читаете спецификаций и понятия не имеете как нужно использовать API, это не говорит о том что оно не работает.

krutoy 30.11.2014 15:27

Цитата:

Сообщение от devote
кто сказал что не работает?

<form id="formID" action="http://ya.ru">
<input type="submit">
</form>
 
<script>

var form = document.getElementById('formID');
form.addEventListener("submit", function() {
return false
});

<form id="formID" action="http://ya.ru">
<input type="submit">
</form>
<script>
var form = document.getElementById('formID');
form.onsubmit = function () {
return false
}
</script>

рони 30.11.2014 15:33

krutoy,
:-?
<form id="formID" action="http://ya.ru">
<input type="submit">
</form>
<script>
var form = document.getElementById('formID');
form.addEventListener('submit', function(e) {
  e.preventDefault();
}, false);
</script>

krutoy 30.11.2014 15:44

рони,
Да, только это "ршение" изящным не назовешь, потому что ты без костылей не можешь повесить функцию, возвращающую false сразу на несколько событий. Поэтому я и говорю о кривизне. Решения не эквивалентны.

danik.js 30.11.2014 15:46

Цитата:

Сообщение от krutoy
Решения не эквивалентны

Ты вобще вкурсе кто и когда разработал события DOM0?

krutoy 30.11.2014 15:47

danik.js,
Не в курсе, и это не имеет отношения к вопросу.

danik.js 30.11.2014 15:54

krutoy, объясни, почему ты решение с return false считаешь хорошим, а с preventDefault() - плохим?

krutoy 30.11.2014 15:58

danik.js,
Мне щас некогда, дела, позже объясню:)

kostyanet 03.12.2014 17:56

return false по-моему только для dom'ных инлайн событий.

kostyanet 03.12.2014 17:57

Например

onclick="{return confirm('Are you really sure to continue?')}"


Часовой пояс GMT +3, время: 23:40.