jQuery Validate Plugin - ทริกเกอร์ตรวจสอบความถูกต้องของฟิลด์เดียว


90

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

มีวิธีใดบ้างที่ฉันสามารถเรียกการตรวจสอบความถูกต้องในฟิลด์นั้นเพียงอย่างเดียว สิ่งที่ต้องการ:

$('#email-field-only').validate()

จะเป็นความคิด ค้นหาเอกสารโดยไม่มีโชค

คำตอบ:


148

วิธีนี้ดูเหมือนจะทำในสิ่งที่คุณต้องการ:

$('#email-field-only').valid();

4
หมายเหตุ: รูปแบบชื่อองค์ประกอบยังทำงานร่วมกับฟังก์ชั่นนี้คือ$('input[name=email-field-only]').valid();ยังทำงาน
Raptor

1
อะไรคือปัญหา? เมื่อฉันใช้วิธีนี้การตรวจสอบความถูกต้องของฉันหยุดลง
nakajuice

2
โซลูชันนี้ตรวจสอบความถูกต้องของแบบฟอร์มทั้งหมดโดยแสดงข้อความแสดงข้อผิดพลาดสำหรับทุกฟิลด์
Pablo

@haemhweg บางทีคุณอาจไม่ได้เรียกเมธอด .validate ()ก่อนที่จะพยายามใช้ . valid () ? เอกสาร: jqueryvalidation.org/valid
userfuser

1
API มีการเปลี่ยนแปลงใช้คำตอบที่ให้ไว้โดย Paul
Anima-t3d

24

ใช้Validator.element():

ตรวจสอบความถูกต้องขององค์ประกอบเดียวส่งคืนค่าจริงหากถูกต้องเป็นเท็จเป็นอย่างอื่น

นี่คือตัวอย่างที่แสดงใน API:

var validator = $( "#myform" ).validate();
validator.element( "#myselect" );

.valid()ตรวจสอบความถูกต้องของแบบฟอร์มทั้งหมดตามที่ผู้อื่นชี้ให้เห็น API กล่าวว่า:

ตรวจสอบว่าแบบฟอร์มที่เลือกถูกต้องหรือไม่หรือองค์ประกอบที่เลือกทั้งหมดถูกต้อง


20

ด้วยเหตุผลบางอย่างวิธีการอื่น ๆ บางวิธีไม่ได้ผลจนกว่าฟิลด์จะถูกโฟกัส / เบลอ / เปลี่ยนแปลงหรือมีการพยายามส่ง ... วิธีนี้ใช้ได้กับฉัน

$("#formid").data('validator').element('#element').valid();

ต้องขุดผ่านสคริปต์ jquery.validate เพื่อค้นหา ...


1
นี่คือสิ่งที่ใช้ได้ผลสำหรับฉันฉันยังเพิ่ม.valid()ในตอนท้ายดังนั้นฉันจึงมองหาฉัน$("#Form").data('validator').element('input[name=__Suburb]').valid(); ฉันเชื่อว่าหากคุณไม่เลือกตาม ID อาจจำเป็นต้องใช้
Mihai P.

2
ฉันไม่คิดว่า.valid()อยู่ในตอนท้ายของสำนวน .element()ฟังก์ชันส่งกลับผลบูล ( เอกสาร | src ) เมื่อฉันพยายามโทร .valid () ฉันได้รับข้อความแสดงข้อผิดพลาด: "Uncaught TypeError: $(...).data(...).element(...).validis not a function"
KyleMit

คุณแนบตัวตรวจสอบความถูกต้องในแบบฟอร์มหรือไม่ เป็นเวลาสองสามปีแล้วที่ฉันใช้การตรวจสอบความถูกต้องของ JQuery ... ดังนั้น API สำหรับสิ่งนี้อาจมีการเปลี่ยนแปลง ในช่วงเวลาที่ฉันต้องทำงานผ่านภายในเพื่อค้นหาสิ่งที่กล่าวมาข้างต้น ไม่ได้เผยแพร่ในเอกสารประกอบดังนั้นโครงสร้างอาจมีการเปลี่ยนแปลงตั้งแต่ที่ฉันดูครั้งล่าสุด
Tracker1

16
$("#FormId").validate().element('#FieldId');

2
ฉันชอบวิธีนี้มากกว่า 1 ซับที่ดี ใช้งานได้ดีขอบคุณ
Andy

1
นี่คือคำตอบที่สมบูรณ์แบบโดยไม่มีข้อผิดพลาดใด ๆ กับประเภทการส่งคืนที่ถูกต้อง
Kaushik Thanki

7

เมื่อคุณตั้งค่าการตรวจสอบของคุณคุณควรบันทึกออบเจ็กต์ตัวตรวจสอบความถูกต้อง คุณสามารถใช้สิ่งนี้เพื่อตรวจสอบความถูกต้องของแต่ละฟิลด์

<script type="text/javascript">
var _validator;
$(function () {    
     _validator = $("#form").validate();   
});

function doSomething() {    
     _validator.element($('#someElement'));
}
</script> 

- โพสต์ข้ามกับคำถามที่คล้ายกันนี้


7

หากคุณต้องการตรวจสอบความถูกต้องของฟิลด์แต่ละฟอร์ม แต่ไม่ต้องการให้ UI ถูกทริกเกอร์และแสดงข้อผิดพลาดในการตรวจสอบความถูกต้องคุณอาจพิจารณาใช้วิธี Validator.check () ซึ่งจะส่งคืนหากฟิลด์ที่กำหนดผ่านการตรวจสอบความถูกต้องหรือไม่

นี่คือตัวอย่าง

var validator = $("#form").data('validator');
if(validator.check('#element')){
    /*field is valid*/
}else{
    /*field is not valid (but no errors will be displayed)*/
}

0

ในกรณีที่คุณต้องการทำการตรวจสอบ "บางองค์ประกอบ" (ไม่ใช่องค์ประกอบทั้งหมด) ในแบบฟอร์มของคุณคุณสามารถใช้วิธีนี้:

$('input[name="element-one"], input[name="element-two"], input[name="element-three"]').valid();

หวังว่าจะช่วยทุกคน :)

แก้ไข


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