隨筆-167  評論-65  文章-0  trackbacks-0

          最近做了一個(gè)項(xiàng)目中的登錄注冊模塊,大部分功能從一個(gè)網(wǎng)站里扣出來的,部分功能自己修改,自認(rèn)為還是有點(diǎn)人性化的

          兼容: opera 9.6 + chrome 2.0 + FF 3 + IE 6

          效果:一邊輸入一邊實(shí)現(xiàn)驗(yàn)證

          image

          環(huán)境:ruby 1.8.6 + rails 2.1.0 + windows

          核心代碼:

          html:

          瀏覽器禁用javascript時(shí)顯示提示信息:

                <noscript>
                  <div  style="color:red">您的瀏覽器不支持javascript,部分功能無法使用</div>
                </noscript>

          當(dāng)瀏覽器禁用JS后,提交按鈕不可用,實(shí)現(xiàn)客戶端驗(yàn)證!

          <div id="js_support" style="display:none">
                <p id="pSubmit"><input type="submit" name="registerform" value="注  冊"  onclick="return submitform();"/></p>
                </div>
                
                <script type="text/javascript">
            $("js_support").style.display = "block";
          </script>
                

          通過javascript的onfocus和onkeyup實(shí)現(xiàn)監(jiān)聽表單域:

          <input  type="text"  class="textbox" onfocus="checkLogin(this);" onkeyup="checkLogin(this);" style="width:120px;" />

          ajax的自動(dòng)驗(yàn)證:其中用到一個(gè)bp.js,是已經(jīng)封裝好的xmlhttprequest對象的,可以到我下面的項(xiàng)目中下載到

          function checkLogin(node) {
              clearError();
              if (bp.String.trim(node.value)!="") {
                var url = "/test/response_validate";
                var params = [];
                params["command"] = "logincheck";
                params["login"] = encodeURI(bp.String.trim(node.value));
                var v = validatePath("login",params["login"]);
                if (v==""){
                  bp.Io.XhrGet({
                    url: url,
                    mimeType: "text/json",
                    params: params,
                    load: function(type, data, e) {
                      if (data==true){
                        loginError = document.getElementById("valstatus").innerHTML = '登錄名已存在';
                        document.getElementById("loginValidate").className = "icon_cross";
                        node.className = "input_error";
                        loginValid = false;
                      } else {
                        loginError = "";
                        document.getElementById("loginValidate").className = "icon_ok";
                        node.className = "textbox";
                        loginValid = true;
                      }
                    },
                    error: function(type, data, e) {}
                  });
                } else {
                  loginError = document.getElementById("valstatus").innerHTML = v;
                  document.getElementById("loginValidate").className = "icon_cross";
                  node.className = "input_error";
                  loginValid = false
                }
              } else {
                loginError = validatePath("login", "");
                document.getElementById("loginValidate").className = "";
                node.className = "textbox";
              }
            }

          后臺(tái):

          這個(gè)是rails的后臺(tái),通過render :partial返回?cái)?shù)據(jù)給客戶端,當(dāng)然可以是任何平臺(tái)下的,例如java平臺(tái)下的可以用servlet的out.println(...)返回

            def response_validate
                 if params[:login]
                name = params[:login]
                puts name
                if name == "aaaaaa"
                @value = true
                render :partial => 'show_info'
                else
                  @value = false
                  render :partial => 'show_info'
                end  
              end
            end

          完整源碼下載:

          http://www.namipan.com/d/0c7456748d0877cb1cb939583f14eadce76dfb2118920100



          write by feng
          posted on 2009-05-11 17:24 fl1429 閱讀(3360) 評論(8)  編輯  收藏 所屬分類: Ajax

          評論:
          # fsaffsafasfasfsafsafasfsafasfasfasfsafsad 2012-04-19 09:59 | fafa
          fafaf  回復(fù)  更多評論
            
          # re: Ajax 表單驗(yàn)證 2012-08-26 16:31 | ghgfh
          gfhfgh  回復(fù)  更多評論
            
          # re: Ajax 表單驗(yàn)證[未登錄] 2012-11-03 14:47 | 糊涂
          # re: Ajax 表單驗(yàn)證[未登錄] 2012-11-03 14:47 | 糊涂
          # re: Ajax 表單驗(yàn)證 2013-07-02 11:29 | 電商沙龍
          代碼有點(diǎn)亂啊  回復(fù)  更多評論
            
          # re: Ajax 表單驗(yàn)證 2014-04-23 12:10 | xun
          代碼好亂  回復(fù)  更多評論
            
          # re: Ajax 表單驗(yàn)證 2014-08-12 20:52 |
          網(wǎng)  回復(fù)  更多評論
            
          # re: Ajax 表單驗(yàn)證[未登錄] 2016-08-16 09:59 | 橘子
          真好 怎么做到的  回復(fù)  更多評論
            
          已訪問數(shù):
          free counters
          主站蜘蛛池模板: 临夏县| 日土县| 六枝特区| 闽清县| 宽甸| 黔江区| 图们市| 南华县| 麻江县| 辽阳市| 镇安县| 镇宁| 呼和浩特市| 福贡县| 三台县| 武功县| 博野县| 盖州市| 涿州市| 朔州市| 松江区| 阜南县| 六安市| 合水县| 白河县| 花垣县| 绍兴市| 嵊泗县| 台中县| 广南县| 新密市| 高陵县| 万安县| 格尔木市| 水城县| 吕梁市| 崇明县| 南召县| 韩城市| 乌恰县| 陈巴尔虎旗|