爲什麼不自己推出一個圖書館?
使用策略模式,您可以輕鬆地針對特定值運行一系列方法。
這是一個半粗略的例子。這顯然需要更多的錯誤處理和修改,但它提供了一個你可以構建的東西的想法。 http://jsfiddle.net/fBfgz/
var validator = (function() {
// Available checks
var types = {
isNum: function(value) {
return !isNaN(value);
},
isNull: function(value) {
return value === null;
}
};
return {
validate: function (data) {
var i, len, check, ret;
for (i = 0, len = data.checks.length; i < len; i += 1) {
if (types.hasOwnProperty(data.checks[i])) {
check = types[data.checks[i]];
ret = check(data.value);
alert(ret);
if (!ret) {
return false;
}
}
}
return true;
}
};
}());
validator.validate({ // will return true
value: 32,
checks: ['isNum']
});
validator.validate({ // will return false
value: 32+'a',
checks: ['isNum']
});
PS:我知道jQuery Validation插件,但它用於表單驗證,並且在大約20kb的位置,它不是我想要加載到沒有窗體的頁面上的東西。 – 2011-12-21 23:24:25
沒錯。我剛剛找到[jsContract](https://github.com/oyvindkinsey/jsContract),它有很多驗證,但它沒有流暢的接口,也沒有使用通用代碼合約術語。還有[JavaScript代碼合同庫](http://jstest.codeplex.com/wikipage?title=JavaScript%20Code%20Contract%20Library),它有一個流暢的界面,但它在如何處理空值時有一些怪癖。在初次提交之後,兩者都沒有更新。有沒有人成功地使用這些技術,或者有人將它們分爲更完整的庫? – 2011-12-22 01:07:52