Rental Bicycle App: Validate Form

ជាទូទៅ នៅ​ក្នុង​គ្រប់​ web application ទាំងឡាយ ការទទួល​យក​ទិន្នន័យ​ពី form ត្រូវ​តែ​មាន​ការត្រួត​ពិនិត្យ​អោយ​បាន​ត្រឹមត្រូវ​ថា តើ​ទិន្នន័យ​ដែល​ត្រូវ​បាន​បញ្ជូន​មក​ទាំងនោះ ពិត​ត្រឹមត្រូវ​ទៅ​តាម​អ្វី​ដែល​ web application ត្រូវការ​ដែរ​ឬ​យ៉ាងណា​។ យ៉ាងណាម៉ិញ យន្តការ​ត្រួត​ពិនិត្យ​មើល​ទិន្នន័យ​បញ្ជូន​មក​ពី form ដែល​ភាសា​អង់គ្លេស​ហៅ​ថា form validation ​អាច​ត្រូវ​ធ្វើ​ឡើង​ពីរ​ដង​ជាប់​គ្នា ​គឺ​លើក​ទី​មួយ​ត្រូវ​ធ្វើ​ឡើង​នៅ​ផ្នែក client-side ដែល​ជា browser របស់​អ្នក​ប្រើប្រាស់​ដោយ​ប្រើប្រាស់​ភាសា JavaScript ហើយ​ការត្រួត​ពិនិត្យ​ជា​លើក​ទី​ពីរ គឺ​ត្រូវ​ធ្វើ​ឡើង​នៅ​លើ server ដោយ​ប្រើប្រាស់​ភាសា Python ។ ពិនិត្យ​កម្មវិធី​ខាង​ក្រោម​នេះ៖

//\public\js\main.js
class Bicycle{
  bicycleForm(formId){
    var brand = document.forms[formId]['fbrand'].value;
    var country = document.forms[formId]['fcountry'].value;
    var year = document.forms[formId]['fyear'].value;
    var amount = document.forms[formId]['famount'].value;
    var price = document.forms[formId]['fprice'].value;
    if((brand == "") || (country == "") || (year == "") || (amount == "") || (price == "")){
      return false;
    }else{
      var numberRGEX = /^(?:[1-9]\d*|0)?(?:\.\d+)?$/;
      var intRGEX = /^[0-9]+$/;
      var numberResult = numberRGEX.test(price);
      var intResult = (intRGEX.test(year) && intRGEX.test(amount));
      if(!numberResult){
        alert('Please enter a number for price.');
        return false;
      }
      if(!intResult){
        alert('Please enter a whole number for year and amount.');
        return false;
      }
    }
  }
}//end of class

var bicycle = new Bicycle();
#\controllers\bikeform.py
import config, re
from bottle import template, route, request

@route("/bikeform")
def renderForm():
  return template('bikeform', data=config.kargs)

@route("/bikeform", method="POST")
def getFormData():
  brand = request.forms.get("fbrand")
  country = request.forms.get("fcountry")
  year = request.forms.get("fyear")
  amount = request.forms.get("famount")
  price = request.forms.get("fprice")

  if not re.findall("[a-zA-Z]", country):
    config.kargs['message'] = "Brand and country name could contain only letter."
    return template('bikeform', data=config.kargs)

  elif not (re.findall("[0-9]", year) and re.findall("[0-9]", amount)):
    config.kargs['message'] = "Year and amount must be whole number."
    return template('bikeform', data=config.kargs)

  elif not (re.findall(r"[-+]?\d*\.\d+|\d+", price)):
    config.kargs['message'] = "Price must be a number."
    return template('bikeform', data=config.kargs)
    
  else:
    config.kargs['message'] = "You have been entering the right data."
    return template('bikeform', data=config.kargs)

GitHub: https://github.com/Sokhavuth/Rental-Bicycle-App
Heroku: https://khmerweb-rba.herokuapp.com/