Получите доступ к событию, чтобы вызвать предотвращение ошибки из пользовательской функции, происходящей из атрибута onclick тега - PullRequest
105 голосов
/ 23 декабря 2011

У меня есть такие ссылки:

<a href="#" onclick="myfunc({a:1, b:'hi'})" />click</a>
<a href="#" onclick="myfunc({a:3, b:'jo'})" />click</a>

, и я хотел бы сделать preventDefault() внутри myfunc, потому что # будет добавлено в адресную строку при нажатии на ссылку (безделать return false; или href='javascript:void(0);')

это возможно?я могу получить событие внутри myfunc

Ответы [ 10 ]

138 голосов
/ 23 декабря 2011

Я полагаю, что вы можете передать event во встроенную функцию, которая будет event объектом для возбужденного события в браузерах, совместимых с W3C (т. Е. Более старые версии IE по-прежнему будут требовать обнаружения внутри вашей функции-обработчика событий для просмотрав window.event).

Быстрый пример .

function sayHi(e) {
   e.preventDefault();
   alert("hi");
}
<a href="http://google.co.uk" onclick="sayHi(event);">Click to say Hi</a>
  1. Запустите его как есть и обратите внимание, что ссылка не перенаправляет в Google после предупреждения.
  2. Затем измените event, переданный в обработчик onclick, на что-то другое, например e, нажмите «Выполнить», затем обратите внимание, что перенаправление происходит после предупреждения (панель результатов становится белой, показываяперенаправление).
99 голосов
/ 14 марта 2014

Самое простое решение просто:

<a href="#" onclick="event.preventDefault(); myfunc({a:1, b:'hi'});" />click</a>

На самом деле это хороший способ выполнить очистку кэша для документов с запасным вариантом без браузеров с поддержкой JS (без очистки кэша без JS)

<a onclick="
if(event.preventDefault) event.preventDefault(); else event.returnValue = false;
window.location = 'http://www.domain.com/docs/thingy.pdf?cachebuster=' + 
Math.round(new Date().getTime() / 1000);" 
href="http://www.domain.com/docs/thingy.pdf">

Если включен JavaScript, он открывает PDF-файл со строкой запроса на очистку кеша, если нет - просто открывает PDF-файл.

10 голосов
/ 23 декабря 2011

Попробуйте это:

<script>
    $("a").click(function(event) {
        event.preventDefault(); 
    });
</script>
7 голосов
/ 23 декабря 2011
<script type="text/javascript">
$('a').click(function(){
   return false;
});
<script>
5 голосов
/ 20 марта 2012

Добавьте уникальный класс к ссылкам и javascript, который запрещает использование ссылок по умолчанию для этого класса:

<a href="#" class="prevent-default" 
   onclick="$('.comment .hidden').toggle();">Show comments</a>

<script>
  $(document).ready(function(){

    $("a.prevent-default").click(function(event) {
         event.preventDefault(); 
          });
  });
</script>
4 голосов
/ 04 декабря 2013

Я думаю, что когда мы используем onClick, мы хотим сделать что-то отличное от значения по умолчанию. Итак, для всех ваших ссылок с помощью onClick:

$("a[onClick]").on("click", function(e) {
  return e.preventDefault();
});
4 голосов
/ 23 декабря 2011

Не можете ли вы просто удалить атрибут href из тега?

1 голос
/ 13 июля 2018

Вы можете получить доступ к событию с помощью клика вот так:

<button onclick="yourFunc(event);">go</button>

и в вашей функции javascript мой совет - добавить оператор первой строки как:

function yourFunc(e) {
    e = e ? e : event;
}

тогда везде используйте e в качестве переменной события

1 голос
/ 07 февраля 2018

Simple!

onclick="blabla(); return false"
0 голосов
/ 13 июля 2018

e.preventDefault (); от https://developer.mozilla.org/en-US/docs/Web/API/event.preventDefault

Или верните false из вашего метода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...