Tukar Jenis Medan Input dengan jQuery: Mengapa Ia Mungkin Tidak Berfungsi
Apabila cuba mengubah suai medan input daripada jenis kata laluan kepada jenis teks menggunakan jQuery, anda mungkin menghadapi isu di mana perubahan tidak berkuat kuasa.
Ini kod yang dimaksudkan:
$(document).ready(function() { // #login-box password field $('#password').attr('type', 'text'); $('#password').val('Password'); });
Kod ini bertujuan untuk menukar medan input dengan id daripada "kata laluan" ke medan teks dan kemudian isikannya dengan teks "Kata Laluan." Walau bagaimanapun, ia mungkin gagal disebabkan oleh model keselamatan penyemak imbas.
Ujian dalam Safari menunjukkan ralat yang menunjukkan bahawa sifat jenis tidak boleh ditukar. Ini juga disokong oleh kod sumber jQuery, yang mengandungi semakan:
if ( name == "type" && jQuery.nodeName( elem, "input" ) && elem.parentNode ) throw "type property can't be changed";
Semakan ini menghalang sifat jenis daripada ditukar untuk medan input dalam Internet Explorer. Tidak jelas sama ada ini pepijat atau pilihan reka bentuk keselamatan.
Untuk mengatasi isu ini, anda boleh menggunakan manipulasi DOM asli dan bukannya jQuery. Begini caranya:
var pass = document.createElement('input'); pass.type = 'password'; document.body.appendChild(pass); pass.type = 'text'; pass.value = 'Password';
Kod ini akan berjaya menukar medan input kepada jenis teks dan mengisinya dengan nilai yang ditentukan.
Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Menukar 'jenis' Medan Input daripada Kata Laluan kepada Teks dengan jQuery?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!