jQuery จำเป็นต้องมีการเพิ่มไปยังช่องใส่


171

ฉันค้นหาวิธีที่จะให้เขียน jQuery โดยอัตโนมัติโดยใช้การตรวจสอบ html5 ไปยังฟิลด์ป้อนข้อมูลของฉันทั้งหมด แต่ฉันมีปัญหาในการบอกตำแหน่งที่จะเขียน

ฉันต้องการสิ่งนี้

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

และให้มีการเพิ่มที่จำเป็นโดยอัตโนมัติก่อนแท็กปิด

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

ฉันคิดว่าฉันสามารถทำอะไรสักอย่างตามสายของ

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

แต่มันไม่ทำงาน ความช่วยเหลือใด ๆ ที่ชื่นชมอย่างมาก


2
มันไม่ได้ห่อในโดมพร้อมหรือยัง? $(function(){....});
PSL


ถ้า 'input' เป็นรหัส jquery ไม่มี # ในตัวเลือกที่นี่
John Meyer

@JohnMeyer "input" เป็นตัวเลือกแท็ก ไม่จำเป็นต้อง # ถ้ากำหนดเป้าหมายแท็กป้อน
Spartacus

คำตอบ:


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

DEMO FIDDLE


1
อืมเพิ่มปุ่มส่ง แต่ยังไม่ได้ตรวจสอบหรือเพิ่มคุณสมบัติที่จำเป็นในช่องใส่ jsfiddle.net/japaneselanguagefriend/LEZ4r
Miura-shi

1
@JohnMeyer "input" เป็นตัวเลือกแท็ก
morefromalan

1
มีTypeError: element.prop is not a functionข้อผิดพลาด
davideghz

@ Miura-shi คุณไม่มี<form></form>แท็กใน jsFiddle
JESTech

ถ้ามันสามารถช่วยให้คน: นี้ไม่ได้ทำงานสำหรับฉันในตอนแรกเพราะฉันถูกเรียก.prop('required',true)ในการป้อนข้อมูลก่อนที่จะเรียก.css("display", "block")มัน
electrotype

52

คุณสามารถทำได้โดยใช้ attr ข้อผิดพลาดที่คุณทำคือใส่คำพูดจริง แทนที่จะลองทำสิ่งนี้:

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

2
@JohnMeyer "input" เป็นชื่อของตัวเลือกแท็ก
dave4jr

requiredเป็นแอตทริบิวต์บูลีนและควรละเว้น (สำหรับ "false") เท่านั้นหรือมีค่าเหมือนกับชื่อ (เช่น"required") สำหรับ "true" .prop()เป็นจริงดีกว่าที่จะใช้
Alnitak

@Alnitak ไม่ได้หากคุณกำลังทำเว็บไซต์ที่เข้ากันได้กับ IE prop()ไม่ทำงานบนเบราว์เซอร์ที่ทันสมัย ยังดีที่สุดที่จะใช้$(ele).attr("required", true)และfalseลบ
Oliver Heward

29

ฉันพบว่าการใช้งานต่อไปนี้มีประสิทธิภาพ:

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

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

คำสั่งเหล่านี้ (attr, removeAttr, prop) ทำงานแตกต่างกันไปขึ้นอยู่กับรุ่นของ JQuery ที่คุณใช้ โปรดอ้างอิงเอกสารที่นี่: https://api.jquery.com/attr/


6

ใช้.attrวิธีการ

.attr(attribute,value); // syntax

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

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

การใช้ .prop

.prop(property,value) // syntax

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

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

อ่านเพิ่มเติมจากที่นี่

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


4

ฉันพบว่า jquery 1.11.1 ไม่สามารถทำสิ่งนี้ได้อย่างน่าเชื่อถือ

ผมใช้และ$('#estimate').attr('required', true)$('#estimate').removeAttr('required')

การลบrequiredไม่น่าเชื่อถือ บางครั้งมันจะออกจากrequiredแอตทริบิวต์โดยไม่มีค่า ตั้งแต่requiredเป็น attibute trueบูลปรากฏตัวเพียงโดยไม่คุ้มค่ามีให้เห็นโดยเบราเซอร์เป็น

ข้อผิดพลาดนี้เป็นระยะ ๆ และฉันเบื่อที่จะยุ่งกับมัน เปลี่ยนไปและdocument.getElementById("estimate").required = truedocument.getElementById("estimate").required = false


removeAttrไม่ทำงานกับฉัน จากนั้นฉันใช้โซลูชันของคุณและทำงานได้ดี ขอบคุณ!
Diego Somar

4

ไม่ควรใส่ความจริงด้วยเครื่องหมายคำพูดคู่ "" ควรเป็นเช่นนั้น

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

นอกจากนี้คุณสามารถใช้เสา

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

แทนที่จะเป็นความจริงคุณสามารถลองได้ เช่น

$('input').prop('required', 'required');
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.