duansky'weblog

          統計

          留言簿(3)

          友情鏈接

          閱讀排行榜

          評論排行榜

          基于prototype.js驗證框架(validation.js)的三個應用

          最近對prototype.js用的比較多,同時發現了一個基于prototype.js的驗證框架: [url=http://tetlaw.id.au/view/blog/really-easy-field-validation-with-prototype]validation.js really easy field validation with prototype[/url],下面是我在開發中用到的三個例子.
          前提條件:
          首先要在html頁面中引入幾個js

          Html代碼
          <script?type='text/javascript'?src='../script/prototype.js'></script>??
          <script?type='text/javascript'?src='../script/validation.js'></script>??
          <script?type='text/javascript'?src='../script/effects.js'></script>?
          (可選)
          加幾段css

          Html代碼
          input.disabled?{???
          ????border
          :?1px?solid?#F2F2F2;???
          ????background-color
          :?#F2F2F2;???
          }
          input.required,?textarea.required?{???
          ????border
          :?1px?solid?#00A8E6;???
          }
          input.validation-failed,?textarea.validation-failed?{???
          ????border
          :?1px?solid?#FF3300;???
          ????color?
          :?#FF3300;???
          }
          ???
          input.validation-passed,?textarea.validation-passed?
          {???
          ????border
          :?1px?solid?#00CC00;???
          ????color?
          :?#000;???
          }
          .validation-advice?{???
          ????margin
          :?5px?0;???
          ????padding
          :?5px;???
          ????background-color
          :?#FF3300;???
          ????color?
          :?#FFF;???
          ????font-weight
          :?bold;???
          }
          ?
          應用一:該例子僅使用前臺腳本進行驗證
          需求:
          查詢條件
          當CSO NO、AGREEMENT NO、流水號中任一項有值時,其他項都可為空

          2. 當CSO NO、AGREEMENT NO、流水號三項都為空時,TARIFF CODE為必輸,其他項選輸


          Html代碼
          <td?class?=?"label">CSO?Number</td>??
          <td><input?type="text"?name="csoNumber"?id?=?"csoNumber"></td>??
          <td?class?=?"label">Agreement?Number</td>??
          <td><input?type="text"?name="agreementNumber"?id?=?"agreementNumber"></td>??
          <td?class?=?"label">SequenceNumber?Number</td>??
          <td><input?type="text"?name="sequenceNumber"?id?=?"sequenceNumber"></td>??
          <td?class?=?"label">Tariff?Code</td>??
          <td><input?type="text"?name="tariffCode"?id?=?"tariffCode"></td>??
          <td?colspan?=?"6"?align?=?"center"><button?class?=?"submit"?id?=?"search">Search</button></td>?

          Javascript代碼
          window.onload?=?function(){???
          ????
          //?注冊查詢按鈕事件???
          ????Event.observe("search",?"click",?function(){???
          ????????
          var?validator?=?Validation.get("IsEmpty");???
          ????????
          if?([$F("csoNumber"),?$F("agreementNumber"),?$F("sequenceNumber")].all(validator.test)){???
          ????????????[
          "required"].all(Validation.test.bind($("tariffCode")));???
          ????????}
          ????}
          );??
          應用二: 該例子通過ajax結合后臺來進行驗證
          需求:
          sapid和password必輸
          且必須從后臺數據庫找到sapid和password對應的記錄, 否則登陸不成功,并給出提示信息

          Html代碼
          <form?method=post?action="requisition.html"?id?=?"frmLogin">??
          ????
          <table?align?=?"center"?style?=?"height:100%">??
          ????????
          <tr>??
          ????????????
          <td>??
          ????????????????
          <fieldset?style?=?"padding:10px">??
          ????????????????
          <legend>Login</legend>??
          ????????????????????
          <table>??
          ????????????????????????
          <tr><td?colspan?=?"2"><input?type?=?"hidden"?id?=?"errMsg"></td></tr>??
          ????????????????????????
          <tr>??
          ????????????????????????????
          <td?class?=?"label"><span?class?=?"requiredFlag">*</span>SAP?ID</td>??
          ????????????????????????????
          <td><input?type="text"?name="sapId"?id?=?"sapId"?class?=?"required"></td>??
          ????????????????????????
          </tr>??
          ????????????????????????
          <tr>??
          ????????????????????????????
          <td?class?=?"label"><span?class?=?"requiredFlag">*</span>Password</td>??
          ????????????????????????????
          <td><input?type="password"?name="password"?id?=?"password"?class?=?"required"></td>??
          ????????????????????????
          </tr>??
          ????????????????????????
          <tr>??
          ????????????????????????????
          <td?colspan?=?"2"?align?=?"center"><input?type?=?"submit"?class?=?"submit"?value?=?"Login">??
          ????????????????????????????????
          <button?class?=?"submit"?onclick?=?"Login.goRegister()">Register</button></td>??
          ????????????????????????
          </tr>??
          ????????????????????
          </table>??
          ????????????
          </fieldset>??
          ????????????
          </td>??
          ????????
          </tr>??
          ????
          </table>??
          </form>?
          Javascript代碼
          window.onload?=?function(){???
          ????
          //?自定義驗證器并注冊到Validation中???
          ????var?validatorName?=?"validate-login-info";???
          ????Validation.add(validatorName,?
          "",?function(){return?false;});????//?驗證器初始化???
          ????var?validator?=?new?Validation('frmLogin',?{stopOnFirst:true,?immediate:true});????//?提交前進行后臺驗證???
          ????Event.observe("frmLogin",?"submit",?function(ev){???
          ????????
          var?result?=?validator.validate();???
          ????????
          if?(result){???
          ????????????
          var?request?=?new?Ajax.Request(???
          ????????????
          "http://localhost:8080/agreement/CheckLoginInfo",??//?提交的URL???
          ????????????{???
          ????????????????method:?'get',???
          ????????????????asynchronous:?
          false,???
          ????????????????parameters:?Form.serialize(
          "frmLogin"),???
          ????????????}
          );???
          ????????????
          //?驗證不通過,顯示出錯信息,?并中止提交操作!???
          ????????????var?transport?=?request.transport;???
          ????????????
          if?(transport.responseText?!=?""){???
          ????????????????Validation.get(validatorName).error?
          =?transport.responseText;???
          ????????????????[validatorName].all(Validation.test.bind($(
          "errMsg")));???
          ????????????????Event.stop(ev);???
          ????????????}
          ???
          ????????}
          ???
          ????}
          )???
          }
          ??
          應用三:
          需求:典型注冊應用, 密碼和確認密碼的一致性驗證

          Html代碼
          <form?method=post?action=""?id?=?"frmRegister">??
          ????
          <table?align?=?"center"?style?=?"height:100%">??
          ????????
          <tr>??
          ????????????
          <td>??
          ????????????????
          <fieldset?style?=?"padding:10px">??
          ????????????????
          <legend>Register</legend>??
          ????????????????????
          <table>??
          ????????????????????????
          <tr>??
          ????????????????????????????
          <td?class?=?"label"><span?class?=?"requiredFlag">*</span>SAP?ID</td>??
          ????????????????????????????
          <td><input?type="text"?name="sapId"?id?=?"sapId"?class?=?"required"></td>??
          ????????????????????????
          </tr>??
          ????????????????????????
          <tr>??
          ????????????????????????????
          <td?class?=?"label"><span?class?=?"requiredFlag">*</span>Password</td>??
          ????????????????????????????
          <td><input?type="password"?name="password"?id="password"?class?=?"required"></td>??
          ????????????????????????
          </tr>??
          ????????????????????????
          <tr>??
          ????????????????????????????
          <td?class?=?"label"><span?class?=?"requiredFlag">*</span>Re-Password</td>??
          ????????????????????????????
          <td><input?type="password"?name="repassword"?id="repassword"?class?=?"validate-identical"></td>??
          ????????????????????????
          </tr>??
          ????????????????????????
          <tr>??
          ????????????????????????????
          <td?colspan?=?"2"?align?=?"center"><input?type?=?"submit"?class?=?"submit"?value?=?"Register"></td>??
          ????????????????????????
          </tr>??
          ????????????????????
          </table>??
          ????????????
          </fieldset>??
          ????????????
          </td>??
          ????????
          </tr>??
          ????
          </table>??
          </form>

          Javascript代碼
          window.onload?=?function(){???
          ????
          //?添加password一致性驗證???
          ????Validation.add("validate-identical",?"the?value?of?password?and?repassword?must?be?identical",?function(v){???
          ????????
          return?!Validation.get('IsEmpty').test(v)?&&?v?==?$F("password");???
          ????}
          )????//?驗證器注冊???
          ????var?validator?=?new?Validation('frmRegister',?{stopOnFirst:true,?immediate:true});???
          }
          ??

          轉自:http://www.javaeye.com/topic/155337

          posted on 2008-09-03 15:14 duansky 閱讀(446) 評論(0)  編輯  收藏 所屬分類: JavaScript

          主站蜘蛛池模板: 台州市| 彭山县| 榕江县| 西宁市| 读书| 华安县| 临朐县| 兴海县| 天柱县| 泸定县| 东兰县| 泰来县| 大埔区| 太湖县| 昌江| 灯塔市| 龙州县| 广东省| 宁晋县| 保德县| 德江县| 玉林市| 腾冲县| 日照市| 上栗县| 邢台县| 突泉县| 长治市| 东至县| 且末县| 子长县| 东海县| 闽清县| 扶绥县| 宁德市| 广元市| 泰顺县| 惠东县| 本溪市| 沛县| 大埔区|