Saya memiliki jangkar dengan set atribut dan keduanya . Jika diklik dan aktifkan Javascript, saya ingin hanya mengeksekusi dan mengabaikan . Demikian juga, jika Javascript dinonaktifkan atau tidak didukung, saya ingin mengikuti URL dan mengabaikannya . Di bawah ini adalah contoh dari apa yang saya lakukan, yang akan mengeksekusi JS dan mengikuti tautan secara bersamaan (biasanya JS dijalankan dan kemudian halaman berubah):HREF
ONCLICK
ONCLICK
HREF
HREF
ONCLICK
<A HREF="http://example.com/no-js-login" ONCLICK="yes_js_login()">Log in</A>
apa cara terbaik untuk melakukan ini?
Saya mengharapkan jawaban Javascript, tetapi saya akan menerima metode apa pun selama itu berfungsi, terutama jika ini dapat dilakukan dengan PHP. Saya telah membaca " a href link mengeksekusi dan mengalihkan halaman sebelum fungsi onclick javascript dapat selesai ", tetapi hanya menunda HREF
, tetapi tidak sepenuhnya menonaktifkannya. Saya juga mencari sesuatu yang lebih sederhana.
Jawaban:
Anda dapat menggunakan solusi pertama yang belum diedit, jika Anda menempatkan pengembalian terlebih dahulu di
onclick
atribut:<a href="https://example.com/no-js-login" onclick="return yes_js_login();">Log in</a> yes_js_login = function() { // Your code here return false; }
Contoh: https://jsfiddle.net/FXkgV/289/
sumber
yes_js_login = function() { // Your code here return false; }
Jika Anda mengembalikan false, tindakan default akan mencegah (membuka href).
Edit: Maaf, sepertinya tidak berhasil, Anda dapat melakukan hal berikut:
<a href="http://example.com/no-js-login" onclick="yes_js_login(); return false;">Link</a>
sumber
onclick="return yes_js_login();"
denganyes_js_login
kembalifalse
event.stopImmediatePropagation()
Cukup nonaktifkan perilaku browser default menggunakan
preventDefault
dan teruskanevent
dalam HTML Anda.<a href=/foo onclick= yes_js_login(event)>Lorem ipsum</a>
yes_js_login = function(e) { e.preventDefault(); }
sumber
<a href="http://www.google.com" class="ignore-click">Test</a>
dengan jQuery:
<script> $(".ignore-click").click(function(){ return false; }) </script>
dengan JavaScript
<script> for (var i = 0; i < document.getElementsByClassName("ignore-click").length; i++) { document.getElementsByClassName("ignore-click")[i].addEventListener('click', function (event) { event.preventDefault(); return false; }); } </script>
Anda menetapkan kelas
.ignore-click
ke sebanyak mungkin elemen yang Anda suka dan klik pada elemen tersebut akan diabaikansumber
.btn-loading
ditambahkan ke tautan yang diklik, kemudian jika berhasil tanda centang (pada kesalahan X) menggantikan animasi pemuatan. Saya tidak ingin tombol tersebut dapat diklik lagi dalam beberapa kasus (untuk keberhasilan dan kesalahan), dengan menggunakan ini saya dapat dengan$(elemnent).addClass('disabled')
mudah dan mudah mencapai fungsionalitas yang saya cari dengan cara yang elegan!Anda dapat menggunakan kode sederhana ini:
<a href="" onclick="return false;">add new action</a><br>
sumber
Lebih mudah jika Anda meneruskan parameter peristiwa seperti ini:
<a href="#" onclick="yes_js_login(event);">link</a>
function yes_js_login(e) { e.stopImmediatePropagation(); }
sumber
Ini mungkin bisa membantu. Tidak perlu JQuery
<a href="../some-relative-link/file" onclick="this.href = 'https://docs.google.com/viewer?url='+this.href; this.onclick = '';" target="_blank">
Kode ini berfungsi sebagai berikut: Teruskan tautan relatif ke Penampil Dokumen Google
this.href
Jadi dalam kasus Anda ini mungkin berhasil:
<a href="../some-relative-link/file" onclick="this.href = 'javascript:'+console.log('something has stopped the link'); " target="_blank">
sumber
Saya memecahkan situasi di mana saya membutuhkan template untuk elemen yang akan menangani sebagai alternatif URL biasa atau panggilan javascript, di mana fungsi js membutuhkan referensi ke elemen pemanggil. Dalam javascript, "ini" berfungsi sebagai referensi mandiri hanya dalam konteks elemen bentuk, misalnya, tombol. Saya tidak menginginkan tombol, hanya tampilan tautan biasa.
Contoh:
<a onclick="http://blahblah" href="http://blahblah" target="_blank">A regular link</a> <a onclick="javascript:myFunc($(this));return false" href="javascript:myFunc($(this));" target="_blank">javascript with self reference</a>
Atribut href dan onClick memiliki nilai yang sama, kecuali saya menambahkan "return false" pada onClick jika itu adalah panggilan javascript. Memiliki "return false" dalam fungsi yang dipanggil tidak berfungsi.
sumber
HREF
?Ini berhasil untuk saya:
<a href="" onclick="return false;">Action</a>
sumber
Dalam kasus saya, saya memiliki kondisi ketika pengguna mengklik elemen "a". Syaratnya adalah:
Jika bagian lain memiliki lebih dari sepuluh item, maka pengguna tidak boleh diarahkan ke halaman lain.
Jika bagian lain memiliki kurang dari sepuluh item, maka pengguna harus diarahkan ke halaman lain.
Fungsionalitas elemen "a" bergantung pada komponen lainnya. Kode dalam peristiwa klik adalah sebagai berikut:
var elementsOtherSection = document.querySelectorAll("#vehicle-item").length; if (elementsOtherSection> 10){ return true; }else{ event.preventDefault(); return false; }
sumber