簡體   English   中英

使用addMethod()的jQuery驗證器自定義規則

[英]jquery validator custom rules using addMethod()

我對jquery驗證程序非常陌生,並且在弄清楚如何使用addMethod使用自定義規則擴展它時遇到了一些麻煩。 我需要從文本字段中獲取base64編碼的內容,修剪換行符並對其進行解碼。 到目前為止,這是我所做的事情,但是很難進行故障排除,因為我無法獲取自動停止提交的表單。 誰能告訴我為什么這兩種方法不起作用?

$.validator.addMethod("trimLineFeeds", function(value, element) {
    return this.optional(element) || value.replace(/\\r\\n/g, "");
}, "Please check your input.");

$.validator.addMethod("b64Decode", function(value) {
    var e={},i,b=0,c,x,l=0,a,r='',w=String.fromCharCode,L=value.length;
    var A="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
    for(i=0;i<64;i++){e[A.charAt(i)]=i;}
    for(x=0;x<L;x++){c=e[value.charAt(x)];b=(b<<6)+c;l+=6;
        while(l>=8){((a=(b>>>(l-=8))&0xff)||(x<(L-2)))&&(r+=w(a));}
    }
    return r;
}, "Please check your input.");

$(document).ready(function() {
        $("#myForm").validate({
        rules: {
            b64Field: {
                regex:      '^[a-zA-Z0-9=\\s]*$',
                maxlength:  8192,
                minlength:  512,
                required:   true,
                trimLineFeeds:  true,
                b64Decode:  true
            }
        }
    });
});

為了更好地解釋我的目標,我需要獲取一些phpseclib密鑰信息,這些信息是json_encode(),base64_encode(),chunk_split(),通過電子郵件發送並通過復制/粘貼到textarea形式將瀏覽器的整個過程反向進行本地存儲。 現在,我設法使自己的代碼正常工作,我希望嘗試獲得的信息可以對其他人有所幫助。

通過更多的閱讀和修補,我得以在這里找到的Base64 / UTF-8編碼/解碼庫的幫助下,完全嘗試了上面的工作: https://gist.github.com/Nijikokun/5192472 : https://gist.github.com/Nijikokun/5192472

注意:將base64-utf8.module.js的本地副本保存到您的服務器,因為從GitHub像CDN一樣使用它並非在所有情況下都有效。 我的瀏覽器(Chrome v30.0.1)抱怨它是文本/純文本,而不是文本/ javascript或應用程序/ javascript,最終出現Uncaught ReferenceError: base64 is not defined錯誤Uncaught ReferenceError: base64 is not defined如果運行, Uncaught ReferenceError: base64 is not defined

這是更新代碼的完整副本。

$.validator.addMethod("trimAndDecode", function(value) {
    value = value.trim();
    value = value.replace(/[\r\n]*/g, "");
    value = base64.decode(value);
    return value;
}, "Please check your input.");

$(document).ready(function() {
        $("#myForm").validate({
        rules: {
            b64Field: {
                regex:      '^[a-zA-Z0-9=\\s]*$',
                maxlength:  8192,
                minlength:  512,
                required:   true,
                trimAndDecode:  true
            }
        }
    });
});

因此,當提交塊chunk_split時,base64編碼的內容如下所示:

eyJjbGllbnQiOnsicHVibGljS2V5IjoiLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0t
LS1cclxuTUN3d0RRWUpLb1pJaHZjTkFRRUJCUUFER3dBd0dBSVJBSjZmK3cydzRU
TWxFN2dUeEt1K0FLTUNBd0VBQVE9PVxyXG4tLS0tLUVORCBQVUJMSUMgS0VZLS0t
LS0iLCJwcml2YXRlS2V5IjoiLS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0t
LVxyXG5NR0VDQVFBQ0VRQ2VuXC9zTnNPRXpKUk80RThTcnZnQ2pBZ01CQUFFQ0VB
V1UxMzZaMUxLNTh4TUw5UFB6cStFQ1xyXG5DUURMeE12b2grVGEyd0lKQU1kSTNw
NDBOWWZaQWdoMUp2VVJBS2hjQndJSWJmckJJUDRmTE1FQ0NFbWxGUjArXHJcbk5j
SWFcclxuLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0iLCJwYXNzUGhyYXNl
IjoiODAxYTY5MTZjMDFhMmMyYzQ0OTYyNGQwMzJlZGE2ODczNDFmNTk0NmUyMWYz
NmI0Y2NiNGMwYWI4YjRhMzg5MWY5NDc4YzllZjYwZDgzZTk5MzE3OTMwNjM0MTg4
OWRlM2IyYTRiMDlhYzVjMGY2YzMwNzRkZWVlYmM0N2FlMTZjM2ZhODFiOWYwNzk3
ODE2ZWQwNTkwZDU5NWM2N2MxYzllMmFkZTdjNWQ2ODBhZDIzYmI0MzY0NjY0NmM5
ZjA0NWJiMTFjNTAzZGEzZjViZmE2M2QzNThjNDk4ODlkZDViYTg0YTk1ZTc1YmU3
NmM2YzUwNmUxNWIxYzYwM2NlNyJ9LCJzZXJ2ZXIiOnsicHVibGljS2V5IjoiLS0t
LS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cclxuTUN3d0RRWUpLb1pJaHZjTkFRRUJC
UUFER3dBd0dBSVJBTUlXdmdnbTlMN2ZhMnE2T0hvaDY0VUNBd0VBQVE9PVxyXG4t
LS0tLUVORCBQVUJMSUMgS0VZLS0tLS0iLCJwcml2YXRlS2V5IjoiIiwicGFzc1Bo
cmFzZSI6IjE1Mjc1NGMyNjJlYzY1NjU5MmEwOTdiMjg1MTVlMDlmMDVkODdiNjAy
ZDg5M2FjNDY1NGQzNjIxZTExNjc4NGQ5NmEyODY4ODE3MWEyY2ViMTQ4N2YxZTBm
NTM4MGIxYmU5NTcwYzdmMDQ5ZTlhYjFkOGM5MDRjMGI4MWQ5NmQyYWMwOGFmNTVj
YjhlZGYyMDJjZmQ3YTdlMjEzOWNlYjk1N2Y4MmRmNzU5MzBiMjZjMDdmMDlkOWJk
YzcxNjcwYmRiMTdhZTE3MjE0MTc4MGM0YzVlNmZhNjgyODg4NmQ1MThmNTg0NGIz
ZThjN2ZkOWRjMmNjNGM1NWRjMmYyNDEifX0=

現在可以對其進行修剪,並刪除回車符/換行符,如下所示:

eyJjbGllbnQiOnsicHVibGljS2V5IjoiLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cclxuTUN3d0RRWUpLb1pJaHZjTkFRRUJCUUFER3dBd0dBSVJBSjZmK3cydzRUTWxFN2dUeEt1K0FLTUNBd0VBQVE9PVxyXG4tLS0tLUVORCBQVUJMSUMgS0VZLS0tLS0iLCJwcml2YXRlS2V5IjoiLS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLVxyXG5NR0VDQVFBQ0VRQ2VuXC9zTnNPRXpKUk80RThTcnZnQ2pBZ01CQUFFQ0VBV1UxMzZaMUxLNTh4TUw5UFB6cStFQ1xyXG5DUURMeE12b2grVGEyd0lKQU1kSTNwNDBOWWZaQWdoMUp2VVJBS2hjQndJSWJmckJJUDRmTE1FQ0NFbWxGUjArXHJcbk5jSWFcclxuLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0iLCJwYXNzUGhyYXNlIjoiODAxYTY5MTZjMDFhMmMyYzQ0OTYyNGQwMzJlZGE2ODczNDFmNTk0NmUyMWYzNmI0Y2NiNGMwYWI4YjRhMzg5MWY5NDc4YzllZjYwZDgzZTk5MzE3OTMwNjM0MTg4OWRlM2IyYTRiMDlhYzVjMGY2YzMwNzRkZWVlYmM0N2FlMTZjM2ZhODFiOWYwNzk3ODE2ZWQwNTkwZDU5NWM2N2MxYzllMmFkZTdjNWQ2ODBhZDIzYmI0MzY0NjY0NmM5ZjA0NWJiMTFjNTAzZGEzZjViZmE2M2QzNThjNDk4ODlkZDViYTg0YTk1ZTc1YmU3NmM2YzUwNmUxNWIxYzYwM2NlNyJ9LCJzZXJ2ZXIiOnsicHVibGljS2V5IjoiLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cclxuTUN3d0RRWUpLb1pJaHZjTkFRRUJCUUFER3dBd0dBSVJBTUlXdmdnbTlMN2ZhMnE2T0hvaDY0VUNBd0VBQVE9PVxyXG4tLS0tLUVORCBQVUJMSUMgS0VZLS0tLS0iLCJwcml2YXRlS2V5IjoiIiwicGFzc1BocmFzZSI6IjE1Mjc1NGMyNjJlYzY1NjU5MmEwOTdiMjg1MTVlMDlmMDVkODdiNjAyZDg5M2FjNDY1NGQzNjIxZTExNjc4NGQ5NmEyODY4ODE3MWEyY2ViMTQ4N2YxZTBmNTM4MGIxYmU5NTcwYzdmMDQ5ZTlhYjFkOGM5MDRjMGI4MWQ5NmQyYWMwOGFmNTVjYjhlZGYyMDJjZmQ3YTdlMjEzOWNlYjk1N2Y4MmRmNzU5MzBiMjZjMDdmMDlkOWJkYzcxNjcwYmRiMTdhZTE3MjE0MTc4MGM0YzVlNmZhNjgyODg4NmQ1MThmNTg0NGIzZThjN2ZkOWRjMmNjNGM1NWRjMmYyNDEifX0=

然后base64解碼如下:

{"client":{"publicKey":"-----BEGIN PUBLIC KEY-----\r\nMCwwDQYJKoZIhvcNAQEBBQADGwAwGAIRAJ6f+w2w4TMlE7gTxKu+AKMCAwEAAQ==\r\n-----END PUBLIC KEY-----","privateKey":"-----BEGIN RSA PRIVATE KEY-----\r\nMGECAQACEQCen\/sNsOEzJRO4E8SrvgCjAgMBAAECEAWU136Z1LK58xML9PPzq+EC\r\nCQDLxMvoh+Ta2wIJAMdI3p40NYfZAgh1JvURAKhcBwIIbfrBIP4fLMECCEmlFR0+\r\nNcIa\r\n-----END RSA PRIVATE KEY-----","passPhrase":"801a6916c01a2c2c449624d032eda687341f5946e21f36b4ccb4c0ab8b4a3891f9478c9ef60d83e993179306341889de3b2a4b09ac5c0f6c3074deeebc47ae16c3fa81b9f0797816ed0590d595c67c1c9e2ade7c5d680ad23bb43646646c9f045bb11c503da3f5bfa63d358c49889dd5ba84a95e75be76c6c506e15b1c603ce7"},"server":{"publicKey":"-----BEGIN PUBLIC KEY-----\r\nMCwwDQYJKoZIhvcNAQEBBQADGwAwGAIRAMIWvggm9L7fa2q6OHoh64UCAwEAAQ==\r\n-----END PUBLIC KEY-----","privateKey":"","passPhrase":"152754c262ec656592a097b28515e09f05d87b602d893ac4654d3621e116784d96a28688171a2ceb1487f1e0f5380b1be9570c7f049e9ab1d8c904c0b81d96d2ac08af55cb8edf202cfd7a7e2139ceb957f82df75930b26c07f09d9bdc71670bdb17ae172141780c4c5e6fa6828886d518f5844b3e8c7fd9dc2cc4c55dc2f241"}}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM