Created
          November 14, 2012 04:41 
        
      - 
      
 - 
        
Save s-hiroshi/4070292 to your computer and use it in GitHub Desktop.  
    JavaScript > snippets > バリデーション
  
        
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | <!DOCTYPE html> | |
| <html lang="ja"> | |
| <head> | |
| <meta charset="utf-8"> | |
| <title>Validation Test</title> | |
| <link rel="stylesheet" href="http://code.jquery.com/qunit/qunit-1.10.0.css" media="all"> | |
| </head> | |
| <body> | |
| <div id="qunit"></div> | |
| <script src="http://code.jquery.com/qunit/qunit-1.10.0.js"></script> | |
| <script src="validation.js"></script> | |
| <script src="validation_test.js"></script> | |
| </body> | |
| </html> | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | /** | |
| * 入力チェック | |
| * | |
| * @author Hiroshi Sawai <[email protected]> | |
| */ | |
| function Validation() {}; | |
| /** | |
| * undefined, null, 空文字''のときはfalse。 | |
| * | |
| * @param values スカラー値または配列 | |
| * 引数なしで呼び出されたときはfalseを返す。 | |
| * ネストは考慮しない。 | |
| */ | |
| Validation.isNotEmpty = function (values) { | |
| var operands = []; | |
| var i; | |
| // 引数なし | |
| if (typeof values === 'undefined') { | |
| return false; | |
| } | |
| // scalar値は配列へ変換 | |
| if ((values instanceof Array) === false) { | |
| operands.push(values) | |
| } else { | |
| operands = values; | |
| } | |
| for (i = 0; i < operands.length; i++) { | |
| if (typeof operands[i] === 'undefined') { | |
| return false; | |
| } | |
| if (operands[i] === null) { | |
| return false; | |
| } | |
| if (operands[i] === '') { | |
| return false; | |
| } | |
| } | |
| return true; | |
| } | |
| /** | |
| * 0より大きいかをチェック | |
| * | |
| * @param {Number} num | |
| * 0より大きいときはtrue。それ以外はfalseを返す。 | |
| * 引数なしで呼び出したときはfalse | |
| */ | |
| Validation.isMoreThan0 = function(num) { | |
| // キャスト失敗はNaNを返す(エラーではない) | |
| // undefined, 空文字, nullはNaNを返す | |
| var result = parseInt(num, 10); | |
| // 数字以外 | |
| if (isNaN(result)) { | |
| return false; | |
| } | |
| // 0以下 | |
| if ((num <= 0) === true) { | |
| return false; | |
| } | |
| // 0より大きい | |
| return true; | |
| }; | |
| /** | |
| * 0以上かをチェック | |
| * | |
| * @param {Number} num | |
| * 0以上はtrue。それ以外はfalseを返す。 | |
| * 引数なしで呼び出したときはfalse | |
| */ | |
| Validation.is0AndMore = function(num) { | |
| // キャスト失敗はNaNを返す(エラーではない) | |
| // undefined, 空文字, nullはNaNを返す | |
| var result = parseInt(num, 10); | |
| // 数字以外 | |
| if (isNaN(result)) { | |
| return false; | |
| } | |
| // 0未満 | |
| if ((num < 0) === true) { | |
| return false; | |
| } | |
| // 0以上 | |
| return true; | |
| }; | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | module('isNotEmpty'); | |
| test('引数なしの呼び出しはfalse', function() { | |
| equal(Validation.isNotEmpty(), false); | |
| }); | |
| test('未定義値はfalse', function() { | |
| var value; | |
| equal(Validation.isNotEmpty(value), false); | |
| }); | |
| test('null値はfalse', function() { | |
| var o = {}; | |
| o = null; | |
| equal(Validation.isNotEmpty(o), false); | |
| }); | |
| test("空文字''はfalse", function() { | |
| equal(Validation.isNotEmpty(''), false); | |
| }); | |
| test('文字列aはtrue', function() { | |
| equal(Validation.isNotEmpty('a'), true); | |
| }); | |
| test("値にundefine, null, 空文字''を含まない配列はtrue", function() { | |
| var arr = []; | |
| arr[0] = 'a'; | |
| arr[1] = 'b'; | |
| equal(Validation.isNotEmpty(arr), true); | |
| }); | |
| test("値にundefinedを含む配列はfalse", function() { | |
| var arr = []; | |
| arr[0]; | |
| arr[1] = 10; | |
| equal(Validation.isNotEmpty(arr), false); | |
| }); | |
| test("値にnullを含む配列はfalse", function() { | |
| var arr = []; | |
| arr[0] = {}; | |
| arr[0] = null; | |
| arr[1] = 10; | |
| equal(Validation.isNotEmpty(arr), false); | |
| }); | |
| test("値に空文字''を含む配列はfalse", function() { | |
| var arr = []; | |
| arr[0] = 10; | |
| arr[1] = ''; | |
| equal(Validation.isNotEmpty(arr), false); | |
| }); | |
| module('isMoreThan0') | |
| test('1はtrue', function() { | |
| var num = 1; | |
| equal(Validation.isMoreThan0(num), true); | |
| }); | |
| test('0はfalse', function() { | |
| var num = 0; | |
| equal(Validation.isMoreThan0(num), false); | |
| }); | |
| test('-1はfalse', function() { | |
| var num = -1; | |
| equal(Validation.isMoreThan0(num), false); | |
| }); | |
| test('Infinityはfalse', function() { | |
| var num = Infinity; | |
| equal(Validation.isMoreThan0(Infinity), false); | |
| }); | |
| test('NaNはfalse', function() { | |
| var num = NaN; | |
| equal(Validation.isMoreThan0(NaN), false); | |
| }); | |
| module('is0AndMore') | |
| test('1はtrue', function() { | |
| var num = 1; | |
| equal(Validation.isMoreThan0(num), true); | |
| }); | |
| test('0はtrue', function() { | |
| var num = 0; | |
| equal(Validation.isMoreThan0(num), false); | |
| }); | |
| test('-1はfalse', function() { | |
| var num = -1; | |
| equal(Validation.isMoreThan0(num), false); | |
| }); | |
| test('Infinityはfalse', function() { | |
| var num = Infinity; | |
| equal(Validation.isMoreThan0(Infinity), false); | |
| }); | |
| test('NaNはfalse', function() { | |
| var num = NaN; | |
| equal(Validation.isMoreThan0(NaN), false); | |
| }); | 
  
    Sign up for free
    to join this conversation on GitHub.
    Already have an account?
    Sign in to comment