Flex validator

พักหลังต้องเก็บรายละเอียดงาน ช่วงนี้ก็เลยมีทั้งแก้ไขโค้ดเก่าๆ ให้ทำงานเร็วขึ้น จากแต่ก่อนที่พอให้ทำงานได้ แล้วก็เก็บพวกฟอร์มต่างๆที่ใส่ตัวตรวจสอบก่อนที่จะส่งไปยังเซิร์ฟเวอร์ เพื่อไม่ให้ทำงานผิดพลาด (จริงๆก็ต้องใส่ทั้งสองฝั่งอะแหละ แต่ผมก็ทำทั้งสองฝั่งอ่ะนะ - -”) คราวนี้ก็เลยเขียนถึง Validator ใน Flex ซะหน่อย
ปกติแล้วเวลาจะใส่อะไรไปยัง Component อื่นก็จะจับมันยัดเข้าไปใต้ Tag ของ Component นั้นแต่ Validator เวลาใส่กลับต้องอยู่ด้านนอกสุดและไม่อยู่ใต้ Tag อะไร โดยจะมี property พื้นฐานบางอย่างที่มีเหมือนกันคือ

  • source: คือตัวแปรที่จะเอาไว้ตรวจสอบ อาจจะเป็น object ทั้งก้อนเลยก็ได้
  • property: ประเภทของ form ว่ารับมาเป็นอะไร ส่วนใหญ่แล้วจะเป็น text
  • trigger: component ที่รอรับเหตุการณ์เตรียมตรวจสอบ
  • triggerEvent: เมื่อเกิดเหตุการณ์ที่กำหนดใน property นี้จาก component ที่กำหนดใน trigger แล้วจะทำการตรวจสอบ

เช่น RegExpValidator

<mx:Script>
  <![CDATA[
    [Bindable]
    private var valid:Boolean = false;
 
    [Bindable]
    private var regular:String = "^((ht|f)tp(s?)\\:\\/\\/|~/|/)?([\\w]+:\\w+@)?([a-zA-Z0-9]{1}([\\w\\-]+\\.)+([\\w]{2,5}))(:[\\d]{1,5})?((/?\\w+/)+|/?)(\\w+\\.[\\w]{3,4})?((\\?\\w+=\\w+)?(&\\w+=\\w+)*)?"
  ]]>
</mx:Script>
 
<mx:RegExpValidator source="{tester}" property="text" expression="{regular}" flags="m" trigger="{tester}" triggerEvent="keyUp" />
 
<mx:Panel title="Regular expression">
  <mx:Form>
    <mx:FormItem label="Input text:">
      <mx:TextInput id="tester" valid="{valid = true}" invalid="{valid = false}" />
    </mx:FormItem>
    <mx:FormItem label="Valid: ">
      <mx:Text text="{valid}" />
    </mx:FormItem>
  </mx:Form>
</mx:Panel>

อันนี้คือผมไว้สำหรับตรวจว่า input ที่ใส่เข้ามาเป็น url หรือป่าว หากใครจะเอา regex ไปใช้ก็เอาไปได้เลย เพราะไปขุดมาจากอากู๋อีกทีเหมือนกัน ;p ด้านบน source ถูกกำหนดไปที่ TextInput ชื่อว่า tester เพื่อบอกว่าจะแสดงข้อความเตือนที่ไหน แล้วกำหนด property เป็น text เพราะ input ที่ใส่เข้ามาต้องเป็นตัวอักษรอยู่แล้ว ตามด้วย trigger ก็คือ tester เหมือนกัน เพื่อตรวจสอบว่าหากมีการกดคีย์บอร์ดทีนึงก็ให้ตรวจสอบทีนึงเลย โดยดูได้จาก triggerEvent ที่ดักไว้ที่ keyUp โดยหากต้องการตรวจสอบครั้งเดียวเมื่อกดคีย์ก็สามารถทำได้โดยเปลี่ยน trigger เป็นปุ่มซักปุ่มแล้วดัก mouseClick หรืออะไรพวกนี้แทน
สำหรับ Validator พื้นฐานต่างๆ ก็สามารถดูได้ที่ mx.validators package ยังขี้เกียจเขียนทีละตัว เนื่องจากท่าทางจะยาวT T”



Comments

No comments yet.

Add Yours

  • Author Avatar

    YOU


Comment Arrow



About Author

llun

Apple addict programmer