Jun. 09
5

jquery validator ตรวจสอบฟอร์มฉบับเทพมาเอง

ปลั๊กอินที่ใช้สำหรับตรวจสอบข้อมูล ของ jquery นั้นมีมากมายเสียเหลือเกิน คุณตี๋ เจ้าคุณปู่แห่ง jquerytips.com ได้เคยเขียนบทความ jQuery Validation ครบทุกเม็ดในการ validate นั่นก็เป็นตัวตรวจสอบความถูกต้องของข้อมูลในฟอร์ม ตัวหนึ่งที่เด็ดดวงเอามากๆ

วันนี้ผมไปเจอตัว validate อีกตัวหนึ่งที่เจ้าของเขาทำเสร็จแล้ว แต่ว่ายังไม่ได้เขียนอธิบายการใช้งาน ทำไว้แต่ตัวอย่างการใช้งาน ผมเห็นว่ามันน่าสนใจดี ก็เลยเอามาเขียนอธิบายเสียเลย

ดาวน์โหลดซ้อสต์ | Live Demo (คลิกปุ่มซับมิต แล้วจะเห็นผล)

หลังจากที่ท่านดาวน์โหลด ซ้อสต์โค้ดมาในนั้นจะมีตัวอย่างอยู่ด้วย ทีนี้เรามาดูวิธีการใช้งานกันดีกว่า

ก่อนอื่น include ไฟล์ที่จำเป็นเข้ามาก่อน

<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/jquery.validationEngine.js"></script>
<link rel="stylesheet" href="css/validationEngine.jquery.css" type="text/css" />

ต่อไปก็แค่เซ็ต ให้มัน validate โดยกำหนด เป็นคลาส ของตัวคอนโทรล ปลั๊กอินตัวนี้ มันจะเช็กตอนซับมิตฟอร์ม โดยอัตโนมัติ

<form action="" method="post" name="form1" id="form1">
 
  <input name="username" type="text" class="validate[required]" />
 
  <input name="" type="submit" value="submit" />
</form>

โค้ดทั้งหมดจะเป็นดังนี้ :

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/jquery.validationEngine.js"></script>
<link rel="stylesheet" href="css/validationEngine.jquery.css" type="text/css" />
<title>Validator</title>
</head>
<body>
<form action="" method="post" name="form1" id="form1">
 
  <input name="username" type="text" class="validate[required]" />
 
  <input name="" type="submit" value="submit" />
</form>
</body>
</html>

ท่านจะเห็นว่าในเท็กบ้อก ผมกำหนด class = validate[required] เวลาฟอร์มถูกซับมิต ตัวปลั๊กอินมันจะมามองหา class validate เมื่อเจอ มันก็จะมองต่อไปว่า จะให้มัน validate ตามกฎไหน ซึ่งก็คือคำที่อยู่ระหว่างเครื่องหมาย [ ]

ในกรณีที่ท่านต้องการให้ตรวจสอบ มากกว่า 1 เงื่อนไข ให้คั่นแต่ละเงื่อนไข ด้วย ,(comma) เช่น

<input name="username" type="text" class="validate[required,length[0,100]]" />

กฎในการตรวจสอบทั้งหมด มีดังนี้

  • required : ต้องป้อนข้อมูล
  • length[0,20] : ป้อนข้อมูลได้ตั้งแต่ 0 – 20 ตัวอักษร (ตัวเลข ในช่อง [] ไปเปลี่ยนเอา )
  • custom[noSpecialCaracters] : ห้ามป้อนอักขระพิเศษ เช่น . – ; $ เป็นต้น
  • custom[onlyLetter] : ป้อนได้เฉพาะตัวหนังสือภาษาปะกิดเท่านั้น
  • custom[onlyNumber] : ป้อนได้เฉพาะตัวเลข
  • custom[email] : ป้อนอีเมล์ให้ถูกต้อง
  • custom[date] : ต้องป้อนข้อมูลวัน ให้อยู่ในฟอร์แมต YYYY-MM-DD
  • custom[telephone] : ป้อนเบอร์โทรศัพท์ให้ถูกต้อง อันนี้เป็นฟอร์แมตของ พี่กันเขานะครับ อย่าเอาไปใช้เลย
  • minCheckbox[2] : เช็กเลือกเช็กบ้อกได้สูงสุด 2 ตัว (ตัวเลข ในช่อง [] ไปเปลี่ยนเอา ) ใช้กับเช็กบ้อกเท่านั้น
  • confirm[password] : ค่าที่ป้อนในตัวนี้เท่ากับค่าที่ป้อนในเท็กบ้อกที่ชื่อ password หรือไม่ (id ของคอนโทรล ในช่อง [] เปลี่ยนเอา)

เอาละครับเพื่อความเข้าใจมากขึ้น ผมจะแสดงตัวอย่างการใช้งานเพิ่มเติม

ต้องป้อนข้อมูล อีเมล์

<input name="textbox" type="text" class="validate[required,custom[email]]" />

ต้องป้อนข้อมูลอย่างน้อย 10 ตัว มากสุดได้ 100 ตัว และป้อนได้เฉพาะตัวหนังสือเท่านั้น

<input name="textbox" type="text" class="validate[required,length[10,100],custom[onlyLetter]" />

ต้องป้อนข้อมูล ที่เป็นตัวเลขเท่านั้น

<input name="textbox" type="text" class="validate[required,custom[onlyNumber]" />

ช่องยืนยันรหัสผ่าน ต้องป้อนให้ตรงกับรหัสผ่าน

<input type="password" name="yourpassword" id="yourpassword" />
<input type="password" name="passwordConfirm" id="passwordConfirm" class="validate[required,confirm[yourpassword]" />

เช็กบ้อก 3 ตัวนี้ คุณเลือกได้แค่ 2 ตัวนะ

<input class="validate[minCheckbox[2]]" type="checkbox"  name="checkboxgroupe" value="5">
<input class="validate[minCheckbox[2]]" type="checkbox" name="checkboxgroupe" value="3"/>
<input class="validate[minCheckbox[2]]" type="checkbox" name="checkboxgroupe" value="9"/>

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

credit : http://www.position-relative.net/

บทความน่าสนใจ

  1. jQuery – fancy zoom plugin
  2. 5 Password strange meter
  3. selector ของ jQuery
  4. คำสั่ง hasClass ของ jQuery
  5. จัดการข้อมูลในฟอร์มด้วย .val()
This entry was posted in jQuery and tagged . Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.

25 Comments

  1. Posted 10/06/2009 at 08:41 | Permalink

    ขอบคุณครับสำหรับบทความดีๆครับ เดี๊ยวลองเล่นดูก่อนครับอันนี้น่าสนใจมากๆครับ

  2. administrator Firefox 3.0.10 Windows XP
    Posted 10/06/2009 at 09:05 | Permalink

    ไม่เข้าใจตรงไหน คุยกันนะครับ

  3. Posted 04/07/2009 at 15:23 | Permalink

    ขอบคุณครับสำหรับบทความดีๆครับ

  4. แทน Firefox 3.0.11 Windows XP
    Posted 10/07/2009 at 21:19 | Permalink

    validator ตัวนี้ใช้ง่ายได้ค่อนข้างง่าย และสะดวกมากมากครับ โดยส่วนตัวนะ ผมว่าเจ้าของ plugins ตัวนี้คงได้ idea มาจาก jquery.validator (ตัวเดียวกับ ที่คุณตี๋ เขียนแนะนำไว้ในบทความ)เพียงแต่ว่า นำมา implement ใหม่ให้ใช้งานได้ง่ายขึ้น ถ้าเอาแบบ validate แบบง่ายๆ ไม่มีเงื่อนไขอะไรมากมายก็ตัวนี้เลยครับ ถ้าแบบ advance ขั้นเทพ jquery.validator จะเหมาะกว่า

    ส่วนตัวผมชอบตัวนี้อยู่ 2 อย่างครับ คือ idea การใช้ regular expression ตรงไปตรงมาดี กับ idea การทำ ballon ที่แสดง error message โดยการใช้ technic css เอา div ที่มี background สีดำมาเรียงต่อๆกัน ซึ่งไม่ต้องพึ่งรูปภาพเลยแม้แต่น้อย ส่วนที่ผมไม่ชอบคือ custom message มันยืดหยุ่นซักเท่าไหร่

  5. โoเลี้ยJ MSIE 8.0 Windows XP
    Posted 06/08/2009 at 13:50 | Permalink

    ขอบคุณค่ะ

  6. Sir_ptw MSIE 7.0 Windows XP
    Posted 25/09/2009 at 09:48 | Permalink

    มีประโยชน์อย่างมากเลย ขอบคุณครับ

  7. Bowwy Chrome 4.1.249.1045 Windows XP
    Posted 21/04/2010 at 10:50 | Permalink

    เป็นประโยชน์มากๆเลย ชอบๆ

  8. benziepee MSIE 8.0 Windows XP
    Posted 16/06/2010 at 18:02 | Permalink

    เราจะเปลี่ยนคำพูด ที่แสดง error ได้ไหม? ถ้าได้ -> ยังไง? ตอบที ^^

  9. มือใหม่ MSIE 8.0 Windows 7
    Posted 05/08/2010 at 11:24 | Permalink

    คือผม..สงสัยอะครับ เวลาที่เราทำอย่าง เช่น insert เสร็จ คือไม่ต้องการให้ฟอร์มมันหายอะครับ.. อยากให้แค่ข้อมูลในฟอร์มหายไปเท่านั้น แล้วก็บอกว่าเราทำเรียบร้อยครับ…
    เช่น…
    เราเรียกใช้หน้า insert.php เข้ามา แล้วพอมันตรวจเสร็จก็จะไปหน้า insert.php พอ insert เสร็จมันดันแสดงแค่ว่า insert เรียบร้อย แต่ฟอร์มหายไป ต้องกด refresh จึงทำต่อได้..

    หน้าหนัก…


    ajaxSubmitMessage: “ข้อมูลได้ทำเสร็จเรียบร้อยครับ”,
    success : false,

    รบกวนตอบด้วยนะครับ..ขอบคุณมากเลยครับ

  10. administrator Firefox 3.6.8 Windows XP
    Posted 05/08/2010 at 11:56 | Permalink

    ตอบคุณมือใหม่ คุณต้องศึกษาเรื่อง AJAX ครับ ซึ่งตัว jQuery มีฟังก์ชั่น AJAX ให้ท่านใช้งานอยู่แล้ว

  11. kaew Chrome 6.0.472.55 Windows XP
    Posted 15/09/2010 at 21:07 | Permalink

    ขอบคุณที่สอนสิ่งดีๆให้ค่ะ ในทางศาสนาพุทธกล่าวว่า การสอนคนอื่นโดยไม่หวงความรู้ ทำให้ชาตินี้และชาติหน้าเป็นคนมีปัญญาหลักแหลมค่ะ ขอบคุณนะคะ

  12. taiit01 Chrome 7.0.517.41 Windows XP
    Posted 08/11/2010 at 15:54 | Permalink

    ขอบคุณ สำหรับบทความดีๆๆค่ะ ใช้ประโยชน์ได้มากเลยค่ะ

  13. l3oss Chrome 7.0.517.44 Windows XP
    Posted 25/11/2010 at 15:25 | Permalink

    ขอบคุณมากค่ะ ได้ประโยชน์มากเลย ขอ share ด้วยนะคะ

  14. ผู้สงสัย Firefox 3.6.13 Windows 7
    Posted 19/01/2011 at 18:01 | Permalink

    ขอบคุณสำหรับการแบ่งปันความรู้ค่ะ เป็นประโยชน์มากเลยค่ะ

    รบกวนสอบถามเกี่ยวกับ minCheckbox ค่ะ
    เนื่องจาก checkbox ถูกตั้งชื่อเป็น ch[] ทำให้ validate ที่ชื่อ minCheckbox ไม่ทำงานค่ะ มีวิธีแก้ไขยังไงหรอค

    แล้วถ้าจะเปลี่ยนกำหนดเป็นต้องเลือกอย่างน้อย 1 หัวข้อ จาก Code
    “minCheckbox”:{ “regex”:”none”, “alertText”:”* Checks allowed Exceeded”}

    ต้องเปลี่ยนเป็นอย่างไรหรอคะ

    ขอบคุณค่ะ

  15. ผู้สงสัย Firefox 3.6.13 Windows 7
    Posted 19/01/2011 at 18:20 | Permalink

    ลืมถามอีกเรื่องค่ะ กรณีตรวจสอบพวกคำค้นหาอ่ะค่ะ

    คือว่าอยากให้พิมพ์ตัวเลข,ภาษาอังกฤษ และภาษาไทยได้เท่านั้น

    ต้องทำอย่างไรหรอคะ

    ขอบคุณอีกครั้งค่ะ

  16. ผู้สงสัย Firefox 3.6.13 Windows 7
    Posted 20/01/2011 at 11:54 | Permalink

    อยากให้ตรวจสอบ textbox 2 ตัว ว่าพิมพ์ตรงกันหรือไม่ ตัวอย่าง เช่น การ confirm การเปลี่ยน password อ่ะค่ะ

  17. ผู้สงสัย Chrome 8.0.552.237 Windows 7
    Posted 20/01/2011 at 12:06 | Permalink

    ตรวจสอบ ช่องว่าง ใช้ \s หรือป่าวคะ ลองใช้แล้วไม่ได้ค่ะ

  18. pp Firefox 3.6.13 Windows XP
    Posted 19/02/2011 at 10:29 | Permalink

    ขอบคุณที่แบ่งปันความรู้กันนะคะ เป็นประโยชน์มากเลย

    แต่มีข้อสงสัยนิดนึงตรงที่ว่าจะเอา validate ตัวนี้ ไปใช้กับ select form

    จะใช้ได้รึเปล่าคะ หรือว่า ใช้ได้แค่กับ textbox คือลองแล้วมันใช้ไม่ได้อ่ะคะ

    รบกวนช่วยดูให้ทีนะคะ

    ขอบคุณคะ

  19. Posted 01/04/2011 at 16:09 | Permalink

    ได้ความรู้จากบทความนี้เอาไปใช้งานจริง ขอบคุณครับ

  20. วัตร Chrome 10.0.648.204 Windows 7
    Posted 01/04/2011 at 18:02 | Permalink

    สุดยอดมากครับ

  21. Posted 12/04/2011 at 11:53 | Permalink

    อยากได้ตรวจสอบไฟล์อับโหลดด้วยอะครับ เอาแบบไม่เกิน 500 kb ครับ มีไหมครับ ในสคริปต์นี้

  22. Posted 02/12/2011 at 16:12 | Permalink

    format date มันเอาไปใช้ค่ะ รูปแบบ class=”validate[custom[date]]”" แล้วมัน require ทำอย่างไรดีค่ะ ต้องแก้ตรงไหนเพิ่มรึเปล่าคะ

  23. nam Firefox 8.0.1 Windows 7
    Posted 05/01/2012 at 14:49 | Permalink

    อยากจะ ห้ามเว้นวรรค อ่ะค่ะ ต้องทำยังไง

    รบกวนด้วยนะค่ะ

  24. fit-ict MSIE 8.0 Windows XP
    Posted 26/01/2012 at 19:03 | Permalink

    ขอบคุณสำหรับโค๊ด และมีเรื่องอยากทราบอีกครับ ถ้าเราทำให้เช็คเลขบัตรประชาชน 13 หลักต้องดัดแปลงโค๊ดอย่างไรบ้างครับ

  25. tapopo Chrome 16.0.912.77 Windows 7
    Posted 30/01/2012 at 10:44 | Permalink

    อยากทราบเหมืแอนกันครับ ว่าถ้าเราทำให้เช็คเลขบัตรประชาชน 13 หลักต้องดัดแปลงโค๊ดอย่างไรบ้างครับ

Post a Comment

You must be logged in to post a comment.