Rumah >hujung hadapan web >tutorial js >Mengapa Saya Tidak Boleh Menukar \'jenis\' Medan Input daripada Kata Laluan kepada Teks dengan jQuery?

Mengapa Saya Tidak Boleh Menukar \'jenis\' Medan Input daripada Kata Laluan kepada Teks dengan jQuery?

Linda Hamilton
Linda Hamiltonasal
2024-11-16 05:08:03716semak imbas

Why Can't I Change an Input Field's 'type' from Password to Text with jQuery?

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!

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