Rumah >hujung hadapan web >tutorial js >Mengapa Menukar Jenis Medan Input Daripada Kata Laluan kepada Teks Dengan jQuery Gagal?

Mengapa Menukar Jenis Medan Input Daripada Kata Laluan kepada Teks Dengan jQuery Gagal?

Linda Hamilton
Linda Hamiltonasal
2024-11-20 04:04:02184semak imbas

Why Does Changing an Input Field Type From Password to Text With jQuery Fail?

jQuery: Menukar Jenis Medan Input

Senario ini melibatkan percubaan untuk mengubah atribut jenis medan input daripada kata laluan kepada teks menggunakan jQuery . Walau bagaimanapun, usaha itu terbukti tidak berjaya.

Kod yang disediakan, selepas pelaksanaan:

$(document).ready(function() {</p><pre class="brush:php;toolbar:false">// #login-box password field
$('#password').attr('type', 'text');
$('#password').val('Password');

});

bertujuan untuk menyasarkan medan #kata laluan dengan atribut jenis ditetapkan sebagai kata laluan dan menukarnya kepada medan teks standard. Selepas itu, ia bertujuan untuk mengisi medan yang diubah dengan teks "Kata Laluan."

Namun, walaupun kod itu wujud, hasil yang diinginkan gagal menjadi kenyataan. Mengapa?

Isu utama isu ini terletak pada kebimbangan keselamatan dalam kefungsian penyemak imbas. Menukar jenis medan input, terutamanya daripada jenis selamat seperti kata laluan kepada yang biasa, mencetuskan langkah keselamatan yang dilaksanakan oleh penyemak imbas. Ini sering diperhatikan dengan penyemak imbas seperti Safari.

Untuk menyelesaikan dilema ini, penyelesaian menggunakan DOM kosong (Model Objek Dokumen) adalah dinasihatkan:

<br>var pass = document.createElement('input');<br>pass.type = 'password';<br>document.body.appendChild(pass);<br>pass.type = 'text';<br>pass.value = 'Kata Laluan';<br>

Pendekatan ini memintas had jQuery sambil mencapai hasil yang diingini.

Perlu diperhatikan bahawa pengubahsuaian langsung atribut jenis melalui jQuery menghadapi masalah dalam IE. Kod sumber jQuery mendedahkan kekangan ini:

<br>// Kami tidak boleh membenarkan sifat jenis ditukar (kerana ia menyebabkan masalah dalam IE)<br>jika ( nama == " type" && jQuery.nodeName( elem, "input") && elem.parentNode )</p>
<pre class="brush:php;toolbar:false">throw "type property can't be changed";

Oleh itu, apabila cuba menukar jenis medan input daripada kata laluan kepada teks menggunakan jQuery dan menghadapi kesukaran, adalah disyorkan untuk menggunakan kaedah DOM mentah yang digariskan di atas untuk mengatasi sebarang sekatan keselamatan yang dikenakan oleh penyemak imbas.

Atas ialah kandungan terperinci Mengapa Menukar Jenis Medan Input Daripada Kata Laluan kepada Teks Dengan jQuery Gagal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn