<span style = "Font-Family: Arial, Helvetica, Sans-Serif; พื้นหลังสี: RGB (255, 255, 255);"> เมื่อวานนี้การค้นหาโครงการรายงานข้อผิดพลาด ความเจ็บปวดมาจากห้องสมุดการผลิต ฉันดูบันทึกเนื่องจากผู้ใช้ป้อนอักขระพิเศษเมื่อค้นหา ไม่มีวิธีที่จะได้รับวิธีที่เร็วที่สุดในการกรองข้อมูลที่ป้อนโดยตรงโดยผู้ใช้และลบอักขระพิเศษ </span>
อักขระพิเศษบางตัวจะถูกส่งผ่านไปยังพื้นหลังและจะสร้างข้อผิดพลาด มันอาจจะถูกฉีดเข้าไปใน SQL ดังนั้นจึงมีการสกัดกั้นพื้นฐาน
มาพูดคุยเกี่ยวกับวิธีการที่อินพุตห้ามอินพุตจากการป้อนอักขระพิเศษ:
วิธีที่ 1: หลังจากได้รับค่าให้ประมวลผลก่อนที่คุณจะผ่าน
ฟังก์ชัน Stripscript (ค่า) {var pattern = new regexp ("[` ~!@#$^&*() = | {} ':;', // [//]. <>/? ~!@¥#¥ … &*() RS+S.SUBSTเพียงแค่เรียกฟังก์ชั่นนี้โดยตรง
วิธีที่ 2: วิธีพื้นฐานที่สุดคือการแจ้งให้ผู้ใช้ไม่สามารถป้อนอักขระพิเศษได้
ฟังก์ชั่น showkeypress (evt) {evt = (evt)? evt: window.eventreturn checkspecifickey (evt.keycode);} ฟังก์ชั่น checkspecifickey (keycode) {var Specialkey = "[` ~!#$^&*() = | {} ':;', // [//]. <>/? ~!# ListVar realkey = string.fromCharcode (keycode); var flg = false; flg = (specialkey.indexof (realkey)> = 0); ถ้า (flg) {// alert ('โปรดอย่าป้อนอักขระพิเศษ:' + realkey); return false;ใช้: การเพิ่มเหตุการณ์ในการควบคุมอินพุตไม่ตอบสนองเลย
ดูเหมือนว่าจะเป็นปัญหาเล็กน้อย ไม่มีการตอบสนองในรัฐจีน ฉันไม่รู้ว่าเกิดอะไรขึ้นดังนั้นฉันจึงพบอีกอันหนึ่ง
วิธีที่ 3: หลังจากได้รับเหตุการณ์ onkeyup มันจะตรงกับวิธีการ
ฟังก์ชั่น validateValue (textbox) {var lelzralString = "[` ~!#$^&*() = | {} ':;', // [//]. <>/? ~!#¥ … &*() textbox.value.charat (ดัชนี); ถ้า (unlueLsTring.indexof (s)> = 0) {s = textboxValue.substring (0, ดัชนี); textbox.value = s;}}ใช้: onkeyUp = "ValidateValue (นี่)" มันจะหายไปทันทีหลังจากเข้าสู่ ผู้ใช้สามารถเห็นได้ว่าสิ่งที่ฉันป้อนเพียงแค่บอกว่ามันจะหายไปหลังจากเข้าสู่ ข้อเสียคืออินพุตอย่างต่อเนื่องจะไม่หายไป (กดค้างไว้)
วิธีที่ยอดเยี่ยมที่สุดต่อไปในการแก้ปัญหาข้างต้น
วิธีที่ 4: ใช้โดยตรงกับการควบคุม
// <อินพุต/[/w]/g, '') "/[^/d]/g, ''))"> // กล่องอินพุตควบคุมสามารถป้อนข้อความหรือตัวเลขเท่านั้นและอักขระพิเศษไม่ได้รับอนุญาตให้ป้อนอักขระต่อไปนี้ที่นี่: (เช่น!@#$%^&*, ฯลฯ ) <br>
ผู้ใช้วิธีนี้จะเห็นว่าอินพุตจะหายไปทันที เช่นเดียวกับวิธีที่สาม แต่อินพุตต่อเนื่องนั้นถูกต้อง
มาดู JS ต่อไปนี้เพื่อพิจารณาว่าตัวละครที่ป้อนไม่สามารถเป็นอักขระพิเศษ:
1. เหตุการณ์ Document.onkeypress เป็นการตรวจสอบเมื่อป้อนอักขระ การติดต่อแบบ showkeypress จะดำเนินการในระหว่างการตรวจสอบ เมื่อส่งคืนจริงสามารถป้อนได้และไม่สามารถป้อนเท็จได้
2. evt = (evt)? EVT: window.event การกดแป้นพิมพ์จะสร้างเหตุการณ์นี้เพื่อรับค่าที่คุณพิมพ์ (เป็นปุ่มของแป้นพิมพ์)
var realkey = string.fromCharcode (ปุ่ม);
เมธอด String.FromCharcode () คือการแปลงค่าแป้นพิมพ์ (ปุ่ม) เป็นค่าที่คุณป้อนจริง
3. วิธีการพิเศษ Key.indexof (realkey):
.indexof () เป็นวิธีการสตริง วิธีการดัชนี () ของสตริงค้นหาว่าสตริงที่ส่งผ่านเป็นพารามิเตอร์จะปรากฏบนสตริงหรือไม่ หากพบสตริงจะส่งคืนตำแหน่งเริ่มต้นของอักขระ (0 หมายถึงอักขระตัวแรก 1 หมายถึงอักขระที่สองและอื่น ๆ ) หากไม่พบ
4. var Specialkey = "#$%/^*/'/"/+";
นี่คือสตริงที่มีตัวละครหลบหนี #, $, %, ^, *, ', ", + เป็นสัญลักษณ์พิเศษและตัวที่มี / ก่อนที่จะต้องหลบหนี
หากคุณต้องการเพิ่มสัญลักษณ์พิเศษอินพุตที่ จำกัด ในกล่องข้อความให้ใช้ <อินพุต type = "text" id = "name" onkeypress = "showkeypress ()">
ข้างต้นเป็นสี่วิธีในการใช้อินพุตที่ห้ามไม่ให้ป้อนข้อมูลจากการป้อนอักขระพิเศษ ฉันหวังว่ามันจะเป็นประโยชน์กับคุณ หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับคุณทันเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!