jQuery perlu menambahkan ke kolom input


171

Saya telah mencari cara agar jQuery secara otomatis menulis diperlukan menggunakan validasi html5 untuk semua bidang input saya, tetapi saya mengalami kesulitan menentukan di mana harus menulisnya.

Saya ingin mengambil ini

 <input type="text" name="first_name" value="" id="freeform_first_name"
 maxlength="150">

dan memilikinya secara otomatis menambahkan diperlukan sebelum tag penutup

 <input type="text" name="first_name" value="" id="freeform_first_name"
 maxlength="150" required>

Saya pikir saya bisa melakukan sesuatu di sepanjang garis

$("input").attr("required", "true");

Tapi itu tidak berhasil. Setiap bantuan sangat dihargai.


2
Apakah tidak dibungkus dom siap? $(function(){....});
PSL


jika 'input' adalah id, jquery tidak memiliki # pada pemilih di sini.
John Meyer

@JohnMeyer "input" adalah pemilih tag. Tidak perlu # jika menargetkan tag input
Spartacus

Jawaban:


420
$("input").prop('required',true);

DEMO FIDDLE


1
Hmm, menambahkan tombol kirim tetapi masih belum memvalidasi atau menambahkan atribut yang diperlukan ke kolom input. jsfiddle.net/japaneselanguagefriend/LEZ4r
Miura-shi

1
@JohnMeyer "input" adalah pemilih tag
morefromalan

1
mendapat TypeError: element.prop is not a functionkesalahan
davideghz

@ Miura-shi Anda kehilangan <form></form>tag di jsFiddle Anda
JESTech

Jika itu dapat membantu seseorang: ini pada awalnya tidak berhasil bagi saya karena saya memanggil .prop('required',true)input sebelum memanggilnya .css("display", "block").
electrotype

52

Anda dapat melakukannya dengan menggunakan attr, kesalahan yang Anda buat adalah Anda memasukkan tanda kutip yang sebenarnya. alih-alih itu coba ini:

$("input").attr("required", true);

2
@JohnMeyer "input" adalah nama pemilih tag
dave4jr

requiredadalah atribut boolean dan hanya boleh dihilangkan (untuk "false"), atau memiliki nilai yang sama dengan namanya (yaitu "required") untuk "true". Ini sebenarnya lebih baik digunakan .prop().
Alnitak

@Alnitak Tidak jika Anda berupaya membuat situs yang kompatibel dengan IE, prop()tidak berfungsi di sana seperti halnya di browser modern. Masih lebih baik digunakan $(ele).attr("required", true)dan falsedihapus.
Oliver Heward

29

Saya telah menemukan bahwa implementasi berikut ini efektif:

$('#freeform_first_name').removeAttr('required');

$('#freeform_first_name').attr('required', 'required');

Perintah-perintah ini (attr, removeAttr, prop) berperilaku berbeda tergantung pada versi JQuery yang Anda gunakan. Silakan rujuk dokumentasi di sini: https://api.jquery.com/attr/


6

Menggunakan .attrmetode

.attr(attribute,value); // syntax

.attr("required", true);
// required="required"

.attr("required", false);
// 

Menggunakan .prop

.prop(property,value) // syntax

.prop("required", true);
// required=""

.prop("required", false);
//

Baca lebih lanjut dari sini

https://stackoverflow.com/a/5876747/5413283


4

Saya menemukan bahwa jquery 1.11.1 tidak melakukan ini dengan andal.

Saya menggunakan $('#estimate').attr('required', true)dan $('#estimate').removeAttr('required').

Menghapus requiredtidak dapat diandalkan. Kadang-kadang akan meninggalkan requiredatribut tanpa nilai. Karena requiredattibute boolean, kehadirannya semata, tanpa nilai, dilihat oleh browser sebagai true.

Bug ini intermiten, dan saya bosan mengacaukannya. Beralih ke document.getElementById("estimate").required = truedan document.getElementById("estimate").required = false.


removeAttrtidak bekerja untuk saya. Lalu saya menggunakan solusi Anda dan berfungsi dengan baik. Terima kasih!
Diego Somar

4

Seharusnya tidak menyertakan benar dengan "" kutipan ganda itu harus seperti

$(document).ready(function() {            
   $('input').attr('required', true);   
});

Anda juga dapat menggunakan prop

jQuery(document).ready(function() {            
   $('input').prop('required', true);   
}); 

Alih-alih benar Anda dapat mencoba diperlukan. Seperti

$('input').prop('required', 'required');
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.