จากการอ่านโพสต์นี้ฉันพบว่ามีคลาสหลอกสำหรับค่าอินพุต 'ถูกต้อง' และ 'ไม่ถูกต้อง' ที่นำมาใช้กับ HTML5
มีวิธีใดบ้างที่ฉันสามารถทำเครื่องหมายช่องป้อนข้อมูลว่าไม่ถูกต้อง / ถูกต้องจากจาวาสคริปต์ หรือฉันสามารถแทนที่วิธีการตรวจสอบความถูกต้องที่ใช้ได้หรือไม่?
จากการอ่านโพสต์นี้ฉันพบว่ามีคลาสหลอกสำหรับค่าอินพุต 'ถูกต้อง' และ 'ไม่ถูกต้อง' ที่นำมาใช้กับ HTML5
มีวิธีใดบ้างที่ฉันสามารถทำเครื่องหมายช่องป้อนข้อมูลว่าไม่ถูกต้อง / ถูกต้องจากจาวาสคริปต์ หรือฉันสามารถแทนที่วิธีการตรวจสอบความถูกต้องที่ใช้ได้หรือไม่?
คำตอบ:
คุณสามารถใช้ฟังก์ชัน customValidity เพื่อจุดประสงค์นี้
หากคุณเพิ่มข้อความ customValidity ลงในฟิลด์ข้อความนั้นจะไม่ถูกต้อง เมื่อคุณตั้งค่าข้อความเป็นสตริงว่างข้อความจะใช้ได้อีกครั้ง (เว้นแต่ว่าจะไม่ถูกต้องเนื่องจากสาเหตุอื่น ๆ )
field.setCustomValidity("Invalid field."); จะทำให้ฟิลด์ไม่ถูกต้อง
field.setCustomValidity(""); จะทำให้ฟิลด์ถูกต้องเว้นแต่จะล้มเหลวข้อ จำกัด ของ HTML5
inputหรือblurคุณสามารถใช้field.reportValidity () ได้ทันที
แก้ไข : มีคนชี้แจงว่าคุณกำลังมองหาแอตทริบิวต์ "ที่ถูกต้อง" "ไม่ถูกต้อง" สำหรับ DOM
dom_object.setAttribute("isvalid", "true")ฉันจะเพิ่มคุณลักษณะที่จะใช้แต่ละแท็ก คุณยังมีฟังก์ชันการตรวจสอบความถูกต้องส่วนกลางซึ่งจะอัปเดตแอตทริบิวต์เหล่านี้ทุกครั้ง (และใช้dom_object.getAttribute("isvalid")ทุกครั้ง)
คุณสามารถเรียกใช้ฟังก์ชันนี้ทุกครั้งที่องค์ประกอบสูญเสียโฟกัสหรือเมื่อใดก็ตามที่คุณต้องการ
ไม่สวยหรู แต่น่าเสียดายที่ตอนนี้ยังไม่มีการรองรับ "หลอก" กับจาวาสคริปต์และ HTML5
หากฉันเข้าใจคำถามของคุณคุณสามารถตรวจสอบความถูกต้องด้วย Javascript แต่จะเตือนว่ามันเป็นเรื่องง่ายมากที่จะตรวจสอบด้านลูกค้าหลีกเลี่ยงโดยเฉพาะอย่างยิ่งการตรวจสอบจาวาสคริปต์ คุณไม่ควรเชื่อถือข้อมูลไคลเอนต์และตรวจสอบทางฝั่งเซิร์ฟเวอร์เสมอ
ตัวอย่างเช่นฉันสามารถค้นหารหัสองค์ประกอบได้อย่างง่ายดายโดยการตรวจสอบซอร์สโค้ดจากนั้นทำการdocument.getElementById('some_id').setAttribute('max', new_number)เปลี่ยนค่าสูงสุด (นี่คือหนึ่งในรายการจากลิงก์ของคุณ)
มีหลายวิธีในการทำดังนั้นฉันจะพยายามให้สำนวนทั่วไปแก่คุณ
คุณสามารถรับค่าได้โดยการทำdocument.getElementById('form_element_id').value(ตรวจสอบให้แน่ใจว่าคุณให้แบบฟอร์มnameที่ถูกส่งไปยังเซิร์ฟเวอร์และidที่จาวาสคริปต์ใช้) สำหรับ textareas .innerHTMLคุณสามารถใช้
จากนั้นคุณมีค่าในตัวแปรมีหลายวิธีในการตรวจสอบ
if (parseInt(my_value) < 0) //errorตัวอย่างเช่นคุณสามารถทำ นอกจากนี้คุณยังสามารถใช้การแสดงออกปกติผมจะไม่อธิบายมันทั้งหมด แต่คุณสามารถเริ่มต้นที่นี่http://www.w3schools.com/jsref/jsref_obj_regexp.asp ฉันรู้ว่า w3schools ไม่ใช่แหล่งที่ดีที่สุด แต่ฉันคิดว่ามันเป็นจุดเริ่มต้นที่โอเค
ตอนนี้สำหรับส่วนการตรวจสอบความถูกต้อง: เพิ่มonsubmit="return validateForm()แท็กฟอร์มของคุณโดยที่ validateForm () เป็นฟังก์ชันที่ตรวจสอบทั้งหมด และฟังก์ชันจะส่งคืนtrueหากถูกต้องหรือเป็นfalseอย่างอื่น สิ่งนี้จะแทนที่ฟังก์ชันการตรวจสอบความถูกต้องเริ่มต้น (ซึ่งโดยค่าเริ่มต้นจะไม่ทำอะไรเลย)
ดังนั้นในตัวอย่างข้างต้นจะถูกแทนที่ด้วย//error return falseคุณสามารถทำอย่างอื่นได้เช่นกัน เช่นแจ้งเตือนข้อผิดพลาดแล้วส่งคืนเท็จ คุณยังสามารถใช้จาวาสคริปต์เพื่อเน้นฟิลด์ที่ไม่ถูกต้อง (ไม่แน่ใจว่านี่คือสิ่งที่คุณหมายถึงหรือไม่โดย " ทำเครื่องหมายช่องป้อนข้อมูลว่าไม่ถูกต้อง / ถูกต้องจากจาวาสคริปต์ ")
แน่นอนว่าหากคุณไม่ต้องการตรวจสอบฟิลด์ทั้งหมดคุณจะต้องส่งคืนจริงหากฟิลด์ใดฟิลด์หนึ่งผ่านเท่านั้น อีกครั้งคุณไม่ควรพึ่งพาสิ่งนี้ แต่ถ้าคุณเป็นเพียงการขัดขวางคนทั่วไปก็เป็นทางออกที่ง่าย
มีวิธีใดบ้างที่ฉันสามารถทำเครื่องหมายช่องป้อนข้อมูลว่าไม่ถูกต้อง / ถูกต้องจากจาวาสคริปต์
น่าเสียดายที่คุณไม่สามารถจัดรูปแบบคลาสหลอกใน JavaScript ได้เนื่องจากไม่ใช่องค์ประกอบจริงจึงไม่มีอยู่ใน DOM จริง
ด้วยวานิลลา JavaScript คุณต้องการใช้การตรวจสอบ API
ใน jQuery คุณสามารถทำได้http://jsfiddle.net/elclanrs/Kak6S/
if ( $input.is(':invalid') ) { ... }
หรือฉันสามารถแทนที่วิธีการตรวจสอบความถูกต้องที่ใช้ได้หรือไม่?
หากคุณกำลังใช้การตรวจสอบความถูกต้องของ HTML5 ให้ยึดตามมาร์กอัป มิฉะนั้นคุณสามารถปิดใช้งานการตรวจสอบความถูกต้อง HTML5 ด้วย$form.attr('novalidate', 'novalidate')และใช้ JS เพื่อตรวจสอบความถูกต้องของฟิลด์ของคุณจากนั้นเพิ่มvalidหรือinvalidเรียนตามความจำเป็น ฉันสร้างปลั๊กอินที่ทำงานในลักษณะนี้เพื่อรองรับเบราว์เซอร์ที่ไม่ใช่ HTML5
input:invalid + label::after{content: " INVALID";color: red;}เพิ่มข้อความที่ไม่ถูกต้องสีแดงหลังป้ายกำกับที่ฉันมีถัดจากช่องป้อนข้อมูลหากช่องนั้นไม่ถูกต้อง (ตัวอย่างเช่นหากช่องอีเมลมีอีเมลที่ไม่ถูกต้องอยู่)