การตรวจสอบแบบเรียลไทม์บน wtform ฉันสามารถเข้าถึงเครื่องมือตรวจสอบความถูกต้องที่ส่วนหน้าได้หรือไม่? [ทำซ้ำ]

ฉันมีคลาส wtform ซึ่งมีลักษณะดังนี้:

class Registration(Form):
  email = StringField('Email', validators=[Required(), Email()])
  username = StringField('Username', validators=[Required()])
  name = StringField('Name', validators=[Required()])
  password = PasswordField('Password',
    validators=[
      Required(),
      EqualTo('confirm_password', message='Your passwords did not match'),
      Length(min=6, max=20, message='passwords must be longer than 6 characters')
    ])
  confirm_password = PasswordField('Confirm Password', validators=[Required()])
  submit = SubmitField('Register')

  def validate_email(self, field):
    if User.query.filter_by(email=field.data).first():
      raise ValidationError('Email already registered')

  def validate_username(self, field):
    if User.query.filter_by(username=field.data).first():
      raise ValidationError('Username already exists')

ฉันคิดว่า WTForms ไม่มีรูปแบบการตรวจสอบแบบอินไลน์แบบเรียลไทม์ที่ส่วนหน้า ซึ่งเป็นเรื่องปกติ แต่ฉันสงสัยว่ามีวิธีใดที่จะตรวจสอบความถูกต้องแบบเรียลไทม์โดยคว้าตัวตรวจสอบความถูกต้องสำหรับฟิลด์และใช้งานในบางฟิลด์ได้หรือไม่ จาวาสคริปต์ชนิดหนึ่ง

เช่น ช่องรหัสผ่าน รหัสผ่านต้องยาวเกิน 6 ตัวอักษร ในกรณีนี้ ฉันต้องการแสดงแบบฟอร์มการตรวจสอบขณะที่พวกเขาพิมพ์: จะเกิดอะไรขึ้นเมื่อพวกเขาพิมพ์  รหัสผ่านไม่ถูกต้อง

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

ปัญหาที่ฉันมีคือการเข้าถึงข้อกำหนดและผู้ตรวจสอบความถูกต้องของ wtform ตามที่อยู่บนหน้า เป็นไปได้ไหมที่จะทำ?


person corvid    schedule 13.06.2014    source แหล่งที่มา


คำตอบ (1)


วิธีการที่ฉันใช้นั้นไม่ได้เล็กน้อยนัก แต่ก็ไม่ได้ซับซ้อนเกินไปเช่นกัน ฉันแนบตัวจัดการกับเหตุการณ์การเปลี่ยนแปลงหรือเบลอบนฟิลด์ที่ฉันต้องการตรวจสอบ เมื่อฉันได้รับเหตุการณ์นี้ ตัวจัดการของฉันจะรวบรวมค่าสำหรับฟิลด์ทั้งหมดในแบบฟอร์ม และส่งคำขอ ajax POST ไปยังเซิร์ฟเวอร์ ขณะนี้เซิร์ฟเวอร์มีแบบฟอร์มทั้งหมดและสามารถตรวจสอบความถูกต้องกับ WTForms ได้ การตอบสนอง JSON ของคำขอ Ajax นี้คือรายการข้อผิดพลาดในการตรวจสอบ ซึ่งไคลเอ็นต์สามารถแสดงได้ตามความจำเป็น

รายละเอียดเพิ่มเติมในคำตอบนี้

person Miguel    schedule 13.06.2014
comment
เฮ้ ฉันกำลังอ่านหนังสือของคุณอยู่ตอนนี้ อย่างไรก็ตาม นี่ค่อนข้างใกล้เคียงกับสิ่งที่ฉันต้องการ เปลี่ยนภาพเบลอเป็น _.debounce เพื่อให้มันใช้งานได้ในขณะที่พวกเขายังคงดูแบบอินไลน์อยู่ ขอบคุณ - person corvid; 14.06.2014