Rumah > Soal Jawab > teks badan
text tag onblur="alert()"
Alert() dicetuskan apabila kotak teks kehilangan kursor
Tetapi apabila tetikus memilih teks ini, dan kemudian tetikus meninggalkan keseluruhan tetingkap penyemak imbas (seperti mengklik pada desktop) , peristiwa amaran() dicetuskan
Sekarang inilah masalahnya:
Selepas mengembalikan tetikus ke penyemak imbas dan mengklik butang pop timbul "OK", tetingkap timbul terus muncul...
Apa yang sepatutnya Saya buat?
怪我咯2017-05-19 10:15:27
Ini tidak akan berlaku, sila hantar kod anda.
Supplement
Kalau boleh jawab mesti dah cuba takde masalah kod di bawah
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<input type="text" onblur="alert();">
</body>
</html>
Telah diuji pada IE11, Firefox, Chrome
Supplement
Situasi yang diterangkan memang wujud Mari kita fikirkan sebabnya:
Selepas bertukar kembali, tetingkap hilang fokus Apabila ia kembali, kotak teks secara automatik mendapat fokus, jadi ia berterusan, dengan itu mencetuskan secara berterusan.
Masalah sebegini sebenarnya sepatutnya kurang kerap berlaku semasa penggunaan. Satu penyelesaian adalah untuk membuat kotak teks hilang fokus apabila tetingkap kehilangan fokus seperti berikut:
Masalah teruji selesai
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<input type="text" onblur="alert();">
<script>
window.onblur=function(){
document.getElementsByTagName('input')[0].blur();
}
</script>
</body>
</html>
黄舟2017-05-19 10:15:27
Saya baru sahaja mencubanya, dan ia memang wujud Namun, jika anda menukar amaran kepada sesuatu yang lain (seperti console.log), kabur tidak akan dicetuskan berulang kali, dalam keadaan biasa, amaran tidak boleh digunakan, jadi masalah ini sepatutnya tidak dapat diselesaikan. Ia tidak akan memberi kesan yang besar. Mengenai mengapa ini berlaku, saya tidak tahu~~