Saya ingin dapat menggunakan Tab kunci dalam kotak teks untuk tab di atas empat ruang. Cara itu sekarang, tombol Tab lompatan kursor saya untuk input berikutnya.
Ada beberapa JavaScript yang akan menangkap tombol Tab di kotak teks sebelum gelembung ke UI?
Saya memahami beberapa browser (misalnya FireFox) mungkin tidak memungkinkan ini. Bagaimana kunci custom-combo seperti Shift+Tab, atau Pilih+Q?
Bahkan jika anda menangkap keydown
/`keyup event, mereka adalah satu-satunya peristiwa yang tombol tab kebakaran, anda masih perlu beberapa cara untuk mencegah aksi default, pindah ke item berikutnya dalam urutan tab, dari terjadi.
Di Firefox anda dapat memanggil preventDefault()
metode pada objek acara diteruskan ke event handler. Di IE, anda harus kembali palsu dari acara yang menangani. Perpustakaan JQuery menyediakan preventDefault
metode pada objek acara yang bekerja di IE dan FF.
<body>
<input type="text" id="myInput">
<script type="text/javascript">
var myInput = document.getElementById("myInput");
if(myInput.addEventListener ) {
myInput.addEventListener('keydown',this.keyHandler,false);
} else if(myInput.attachEvent ) {
myInput.attachEvent('onkeydown',this.keyHandler); /* damn IE hack */
}
function keyHandler(e) {
var TABKEY = 9;
if(e.keyCode == TABKEY) {
this.value += " ";
if(e.preventDefault) {
e.preventDefault();
}
return false;
}
}
</script>
</body>
I'd agak tab lekukan tidak bekerja dari melanggar tabbing antara bentuk barang-barang.
Jika anda ingin indent untuk dimasukkan ke dalam kode di Markdown kotak, menggunakan Pilih+K (atau ⌘K pada Mac).
Dalam hal benar-benar menghentikan tindakan, jQuery (yang Stack Overflow menggunakan) akan menghentikan acara dari menggelegak ketika anda kembali palsu dari sebuah acara callback. Hal ini membuat hidup lebih mudah untuk bekerja dengan beberapa browser.
Jawaban sebelumnya baik-baik saja, tapi aku'm salah satu dari orang-orang yang's tegas terhadap pencampuran perilaku dengan presentasi (menempatkan JavaScript di HTML saya) jadi saya lebih memilih untuk menempatkan penanganan event logika dalam file JavaScript. Selain itu, tidak semua browser melaksanakan acara (atau e) dengan cara yang sama. Anda mungkin ingin melakukan pemeriksaan sebelum menjalankan logika:
document.onkeydown = TabExample;
function TabExample(evt) {
var evt = (evt) ? evt : ((event) ? event : null);
var tabKey = 9;
if(evt.keyCode == tabKey) {
// do work
}
}
Saya akan menyarankan untuk mengubah perilaku default kunci. Saya melakukan sebanyak mungkin tanpa menyentuh mouse, jadi jika anda membuat kunci tab tidak pindah ke kolom berikutnya pada formulir saya akan sangat parah.
Tombol pintas yang bisa berguna namun, terutama dengan besar blok kode dan bersarang. Shift-TAB adalah pilihan yang buruk karena yang biasanya membawa saya ke bidang sebelumnya pada formulir. Mungkin tombol baru pada WMD editor untuk menyisipkan kode-TAB, dengan tombol shortcut, akan menjadi mungkin?
ada masalah dalam jawaban terbaik yang diberikan oleh ScottKoon
berikut ini adalah itu
} else if(el.attachEvent ) {
myInput.attachEvent('onkeydown',this.keyHandler); /* damn IE hack */
}
Harus
} else if(myInput.attachEvent ) {
myInput.attachEvent('onkeydown',this.keyHandler); /* damn IE hack */
}
Karena ini tidak't bekerja di IE. Berharap bahwa ScottKoon akan memperbarui kode