badqiu

          XPer
          隨筆 - 46, 文章 - 3, 評論 - 195, 引用 - 0
          數據加載中……

          擴展基于prototype的validation.js

          validation.js是一個基于prototype表單前端驗證工具,與其它庫相比,簡單易用.
          下面是對validation的介紹
          http://tetlaw.id.au/view/blog/really-easy-field-validation-with-prototype/
          ajax
          http://ajax.org/space/start/2006-05-15/2
          http://ajax.org/space/start/2006-05-22/1

          以下是對其做的擴展.

          • 新增驗證:
          • 增加min-value-number驗證,例: 最小值為10.1 = min-value-10.1
          • 增加max-value-number驗證,例: 最大值為-100.1 = min-value--100.1
          • 增加長度范圍validate-length-range-minLength-maxLength驗證,例: 最小長度為1,最大長度為10:validate-length-range-1-10
          • 增加整型數字范圍validate-int-range-minValue-maxValue驗證,例: 5至20 : validate-int-range-5-20
          • 增加浮點數字范圍validate-float-range-minValue-maxValue驗證,例: 1.1至10 : validate-float-range-1.1-10
          • 增加min-length-number驗證,例: 最小長度為10 = min-length-10
          • 增加max-length-number驗證,例: 最大長度為10 = max-length-10
          • 增加文件類型 validate-file-type1-type2-typeX 的驗證,例: validate-file-zip-png-jpeg 將驗證文件是否為zip,png,jpeg格式之一
          • 增加中文日期驗證 validate-date-cn

          ?

          • 修改記錄:
          • 增加Validation._getInputValue() 取代$F()方法以對file input進行驗證
          • 修正Validation.isVisible() 中while循環中elm可能不存在為空的問題
          • 增加ValidationFactory for cache
          • 修改Validation.get()方法使用indexOf()的匹配模式,以適應可以通過class傳遞參數
          • 修改errorMsg可由方法返回

          min-length-number,max-length-number,validate-file-xx1的實現機制主要是直接使用className作為參數傳遞,再在驗證方法中抽取max-length-number的number作為參數使用

          下載?http://www.aygfsteel.com/Files/badqiu/validation1.5.3.rar

          posted on 2006-10-28 11:59 badqiu 閱讀(5002) 評論(40)  編輯  收藏 所屬分類: AJAX

          評論

          # re: 擴展基于prototype的validation.js   回復  更多評論   

          俺正需要一個JS的驗證庫。多謝啦~
          2006-10-28 22:52 | mixlee

          # re: 擴展基于prototype的validation.js   回復  更多評論   

          頂一個
          2006-10-30 10:06 | inlife.cn

          # re: 擴展基于prototype的validation.js   回復  更多評論   

          good
          2006-10-30 16:13 | 不錯.

          # re: 擴展基于prototype的validation.js   回復  更多評論   

          在Struts中使用修改以后的驗證框架,在IE下沒有任何問題,而使用英文原版的框架則沒有任何問題.
          2006-11-12 18:58 | Aqing[匿名]

          # re: 擴展基于prototype的validation.js   回復  更多評論   

          在Struts中使用修改以后的驗證框架,在IE下沒有任何反應,而使用英文原版的框架則沒有任何問題.
          2006-11-12 18:59 | Aqing[匿名]

          # re: 擴展基于prototype的validation.js   回復  更多評論   

          如果JSP頁面中的編碼是utf-8,這個中文校驗就會失效;
          如果JSP頁面中的編碼是GBK,這個中文校驗就沒有問題

          看來是JAVAScript的編碼問題

          謝謝你能夠把validation翻譯過來
          2006-11-12 21:22 | Aqing[匿名]

          # re: 擴展基于prototype的validation.js   回復  更多評論   

          在IE中出現錯誤: "Unterminated string constant"
          2006-11-24 20:50 | abc

          # re: 擴展基于prototype的validation.js   回復  更多評論   

          我發現在有一個問題,一個網頁,如果是以htm,html或是jsp結尾的話,都沒有沒有問題,可是,在IIS下,如果使用aspx結尾,即使這個文件不做任何其它的改動,但這個驗證效果,就出不來了,而且會出現一個錯誤:附件是一個JAVASCRIPT報錯的提示。



          行:53

          列:33

          錯誤:末結束的字符串常量

          代碼:0

          URL:……

          2006-12-20 18:31 | hypgr

          # re: 擴展基于prototype的validation.js   回復  更多評論   

          如果發生"Unterminated string constant"與"末結束的字符串常量"都是由于編碼問題引起,請將validation_cn.js另存成與你的網頁相適應的編碼即可!
          validation_cn.js默認是GBK編碼
          2006-12-20 21:17 | badqiu

          # re: 擴展基于prototype的validation.js   回復  更多評論   

          用ajax框架驗證后,顯示出錯誤提示信息,但是仍然可以提交成功。
          2007-03-09 15:40 | lly

          # re: 擴展基于prototype的validation.js [未登錄]  回復  更多評論   

          新版本已經解決了這個問題,還未發布,你可以通過以下地址下載:
          http://svn.javascud.org/svn/si/validation/trunk/

          下載前請查看ChangeLog
          2007-03-26 09:49 | badqiu

          # re: 擴展基于prototype的validation.js   回復  更多評論   

          只能在IE中使用,不能使用FireFox瀏覽器。
          2007-04-26 13:47 | Tang Anping

          # re: 擴展基于prototype的validation.js   回復  更多評論   

          幾種常用的瀏覽器及其版本都已經測試過,你直接打開test.html,如果測試全部通過那就是正常的了!!
          如果以上正常但你編寫的頁面不正常,那可能是前面說的編碼問題,自己查一下
          2007-04-27 12:04 | badqiu

          # re: 擴展基于prototype的validation.js   回復  更多評論   

          當鏈接到一個新頁面,提交的時候正常,重置和取消的時候還在驗證,這樣就需要點擊兩次,因為你第一次已經獲得焦點,能不能修改一下!
          2007-05-11 21:19 | Tang Anping

          # re: 擴展基于prototype的validation.js [未登錄]  回復  更多評論   

          ajax 驗証好像有點問題..和你的document不太一樣

          class='validate-ajax-validate-service.jsp'
          還是
          class='validate-ajax' validateUrl='http://localhost:8080/validate-email.jsp' validateFailedMessage='email already exists'

          我兩個方法也不行
          2007-06-25 13:10 | Victor

          # re: 擴展基于prototype的validation.js   回復  更多評論   

          開發版是使用前面那種進行ajax驗證
          后一種方法是v2.3.4版本的ajax驗證
          源代碼svn:
          http://svn.javascud.org/svn/si/validation/trunk/
          可以下載新版本,還未正式發布
          2007-06-27 09:20 | badqiu

          # re: 擴展基于prototype的validation.js [未登錄]  回復  更多評論   

          我發覺假如使用了Validation.js後,而我的program中任何一個element id是'result'時,例如<div id="result">abc</div>皆會產生很多奇怪的error,
          例如設了immediate=false但會無效和不停跳出一個error
          '物件不支援此屬性或方法'
          此問題只會出現在IE中,FF好像正常

          我花了兩天才找到問題所在呢......@______@
          2007-06-29 14:15 | Victor

          # re: 擴展基于prototype的validation.js [未登錄]  回復  更多評論   

          還有一個問題..
          假如把form的class="require-validate"
          會無故執行了focusFirstElement

          但我的form 預設是用了prototype的
          $(formID).disable...因此Validation.js強迫我要focusFirstElement,令我的程式一直報錯...

          最奇怪的地方是.我發覺"require-validate"不是必須的...form沒有設class="require-validate"亦可..那為何document說需 要設呢?
          2007-06-29 14:31 | Victor

          # re: 擴展基于prototype的validation.js   回復  更多評論   

          通過required-validate標記的表單是會運行Form.focusFirstElement()方法
          你可以將這句刪除,在源代碼的最后部分Validation.autoBind()中
          2007-06-29 17:20 | badqiu

          # re: 擴展基于prototype的validation.js [未登錄]  回復  更多評論   

          那麼可以不用required-validate 而改為new Validation('frm1',{onSubmit:false});嗎??

          另外我之前提及有關<div id="result">abc</div>是否真有其事還是我自己的問題呢???
          2007-06-29 17:37 | Victor

          # re: 擴展基于prototype的validation.js   回復  更多評論   

          的確有這樣的問題,還未查什么原因!
          2007-07-02 09:12 | badqiu

          # re: 擴展基于prototype的validation.js [未登錄]  回復  更多評論   

          這個<div id="result">問題我找得發瘋了才找到.....這繼續努力
          2007-07-03 11:35 | Victor

          # re: 擴展基于prototype的validation.js   回復  更多評論   

          已經修正<div id="result">這個問題,你可以從svn下載最新版本
          2007-07-05 09:01 | badqiu

          # re: 擴展基于prototype的validation.js [未登錄]  回復  更多評論   

          請問可否修改個別提示的顯示位置呢???
          我的情況像這樣
          <div>
          <input type="checkbox" name="test[]"> a
          <input type="checkbox" name="test[]"> b
          <input type="checkbox" name="test[]" class="validate-one-required
          "> c
          </div>

          warnning會顯示在div內,如何個別修改其顯示位置到div外呢?
          2007-07-05 14:07 | Victor

          # re: 擴展基于prototype的validation.js   回復  更多評論   

          可以使用
          <div id="advice-validate-one-required-test[]">
          </div>

          id的模式等于:
          advice-$validatorName-$elementId
          具體可以查看源代碼:
          1     getAdvice : function(name, elm) {
          2         return Try.these(
          3             function(){ return $('advice-+ name + '-+ ValidationUtils.getElmID(elm)) },
          4             function(){ return $('advice-+ ValidationUtils.getElmID(elm)) }
          5         );
          6     },
           
          2007-07-05 16:18 | badqiu

          # re: 擴展基于prototype的validation.js [未登錄]  回復  更多評論   

          這樣便可以做到我要的效果
          <div>
          <input type="checkbox" name="test[]"> a
          <input type="checkbox" name="test[]"> b
          <input type="checkbox" name="test[]" class="validate-one-required
          "> c
          </div>
          <div id="advice-validate-one-required-test[]"></div>


          <div>
          <ul>
          <li><input type="checkbox" name="test[]">a</li>
          <li><input type="checkbox" name="test[]">b</li>
          <li><input type="checkbox" name="test[]" class="validate-one-required">c</li>
          </ul>
          </div>
          <div id="advice-validate-one-required-test[]"></div>

          這樣的話validate-one-required會有問題,因為他不理會其他test[]
          請問有方法幫救嗎?我必須要把它們先放在<ul>,<li>內呢
          2007-07-05 17:33 | Victor

          # re: 擴展基于prototype的validation.js [未登錄]  回復  更多評論   

          好像可以自行加一個定義即可...我試試看...謝謝
          2007-07-05 18:07 | Victor

          # re: 擴展基于prototype的validation.js [未登錄]  回復  更多評論   

          和各位分享一下

          ['validate-one-required-fromGrandParent', function (v,elm) {
          var p = elm.parentNode.parentNode;
          var options = p.getElementsByTagName('INPUT');
          return $A(options).any(function(elm) {
          return $F(elm);
          });
          },{ignoreEmptyValue : false}]
          2007-07-05 18:16 | Victor

          # re: 擴展基于prototype的validation.js   回復  更多評論   

          你自己的改動太大了
          我感覺在原來的擴展就是,原來升級也沒有很大關系
          還有我感覺不要那個效果庫會好點
          2007-08-16 14:59 | diandian

          # re: 擴展基于prototype的validation.js [未登錄]  回復  更多評論   

          這點我也同意..
          一是選擇以擴展形式...二是自行重新開發一套
          2007-08-18 10:13 | Victor

          # re: 擴展基于prototype的validation.js   回復  更多評論   

          @diandian
          效果庫不要,直接不要導入effects.js即可去掉效果

          跟原作者相比是改動很大,主要是原程序功能沒有這么強大,只是原作者的創意很棒
          2007-08-21 09:36 | badqiu

          # re: 擴展基于prototype的validation.js   回復  更多評論   

          好東西啊,頂頂頂啊!!!
          2007-09-27 16:09 | #

          # re: 擴展基于prototype的validation.js [未登錄]  回復  更多評論   

          請問如何處理"日期 B 只可以大過或等於 日期A"的情況呢???
          great-than-$otherInputId
          less-than-$otherInputId
          equals-$otherInputId
          因為這些都不合用
          2007-09-28 12:17 | Victor

          # re: 擴展基于prototype的validation.js [未登錄]  回復  更多評論   

          請問可否嘗試一下這個組合方式,因為我發現了較多的問題,條件如下
          1.兩個日期皆需要填寫
          2.兩個必須是日期格式
          3.前者必須大於後者
          4.把warning msg寫在外

          但會發生錯誤..請指教

          <input type="text" id="dateFrom" name="dateFrom" class="required-validate-date" value="2007-09-01" />
          to
          <input type="text" id="dateTo" name="dateTo" class="required-validate-date-great-than-dateFrom" value="2007-09-02" />
          <div id="advice-required-validate-date-dateFrom" class="validation-advice" style="display:none;"></div>
          <div id="advice-required-validate-date-great-than-dateFrom-dateTo" class="validation-advice" style="display:block"></div>

          2007-09-28 14:16 | Victor

          # re: 擴展基于prototype的validation.js   回復  更多評論   

          @Victor
          日期可以不需要驗證的,有一個強大的日期控件,可以去看一下,可以自動糾錯,而且可以自動限制日期的選擇。http://blog.csdn.net/My97/archive/2007/06/29/1671264.aspx
          2007-10-05 13:10 | Tang Anping

          # re: 擴展基于prototype的validation.js [未登錄]  回復  更多評論   

          這個我之前也在用...
          功能上它的確是我用過之中最棒的一個,自動化,功能齊全..
          但.....它不用class去封裝整個calendar..令到它的code經常跟其他 Js program發生相撞的情況..
          當配合script.aculo.us時便會有err
          我己經在
          http://blog.csdn.net/My97/archive/2007/06/11/1647856.aspx#FeedBack 給了意見...vtsuper就是本人了

          除了這個calendar還有沒有其他選擇??validation.js的方向又有解決方法嗎??
          2007-10-05 13:41 | Victor

          # re: 擴展基于prototype的validation.js   回復  更多評論   

          能夠支持struts form的使用嗎
          2007-10-24 09:11 | 四三三

          # re: 擴展基于prototype的validation.js [未登錄]  回復  更多評論   

          現在Prototype.js已經升級到1.6.0_rc1了,我以前用的驗證是基于1.5.0_rc2版本的,現在想把1.5.0_rc2升級到1.6.0_rc1,不過升級之后卻不能運行,你們有遇到這個問題嗎?是如何解決的?
          2008-01-02 16:41 | Future

          # re: 擴展基于prototype的validation.js [未登錄]  回復  更多評論   

          應該與validation js無關,升級effects.js與prototype.js至相適應的版本即可
          2008-01-02 16:47 | badqiu

          # re: 擴展基于prototype的validation.js   回復  更多評論   

          頂一個。
          2008-06-23 13:31 | jiankang
          主站蜘蛛池模板: 合阳县| 淄博市| 金堂县| 绥德县| 海门市| 扬州市| 时尚| 临洮县| 松江区| 闵行区| 博野县| 酉阳| 威远县| 资兴市| 林西县| 长武县| 乐清市| 眉山市| 灌南县| 兴文县| 永泰县| 安多县| 通州市| 茶陵县| 饶阳县| 德兴市| 广河县| 二手房| 中牟县| 茶陵县| 永宁县| 深州市| 嘉定区| 龙江县| 卢氏县| 婺源县| 山西省| 西宁市| 三亚市| 盐城市| 青铜峡市|