Rumah >hujung hadapan web >tutorial js >Mengapa Saya Tidak Boleh Mengubah Jenis Medan Input dengan Amanah dengan jQuery?

Mengapa Saya Tidak Boleh Mengubah Jenis Medan Input dengan Amanah dengan jQuery?

Susan Sarandon
Susan Sarandonasal
2024-11-15 18:56:02537semak imbas

Why Can't I Reliably Change Input Field Types with jQuery?

Menukar Jenis Medan Input dengan jQuery: Isu Disemak Semula

Dalam percubaan untuk mengubah jenis medan input daripada kata laluan kepada teks dan tetapkan nilai lalai, coretan jQuery berikut mungkin gagal:

$(document).ready(function() {
    $('#password').attr('type', 'text');
    $('#password').val('Password');
});

Setelah pemeriksaan lebih dekat, isu ini timbul daripada langkah keselamatan penyemak imbas, yang sering melarang tindakan sedemikian.

Untuk menunjukkan pengehadan ini, pertimbangkan coretan berikut, yang mencipta medan input kata laluan dan cuba menukar jenisnya kepada teks:

var pass = document.createElement('input');
pass.type = 'password';
document.body.appendChild(pass);
pass.type = 'text';
pass.value = 'Password';

Dalam senario ini, operasi berjaya tanpa masalah. Walau bagaimanapun, selepas memeriksa kod sumber jQuery, kami menemui kes khusus yang berkaitan dengan Internet Explorer:

// We can't allow the type property to be changed (since it causes problems in IE)
if ( name == "type" && jQuery.nodeName( elem, "input" ) && elem.parentNode )
    throw "type property can't be changed";

Ini menunjukkan bahawa ia mungkin pepijat penyemak imbas atau ciri keselamatan yang disengajakan dalam Internet Explorer. Oleh itu, menukar jenis medan input melalui jQuery mungkin bukan penyelesaian yang boleh dipercayai dalam semua kes.

Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Mengubah Jenis Medan Input dengan Amanah dengan jQuery?. 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