VTypes.js
上传用户:shuoshiled
上传日期:2018-01-28
资源大小:10124k
文件大小:5k
源码类别:

中间件编程

开发平台:

JavaScript

  1. /*!
  2.  * Ext JS Library 3.0.0
  3.  * Copyright(c) 2006-2009 Ext JS, LLC
  4.  * licensing@extjs.com
  5.  * http://www.extjs.com/license
  6.  */
  7. /**
  8.  * @class Ext.form.VTypes
  9.  * <p>This is a singleton object which contains a set of commonly used field validation functions.
  10.  * The validations provided are basic and intended to be easily customizable and extended.</p>
  11.  * <p>To add custom VTypes specify the <code>{@link Ext.form.TextField#vtype vtype}</code> validation
  12.  * test function, and optionally specify any corresponding error text to display and any keystroke
  13.  * filtering mask to apply. For example:</p>
  14.  * <pre><code>
  15. // custom Vtype for vtype:'time'
  16. var timeTest = /^([1-9]|1[0-9]):([0-5][0-9])(s[a|p]m)$/i;
  17. Ext.apply(Ext.form.VTypes, {
  18.     //  vtype validation function
  19.     time: function(val, field) {
  20.         return timeTest.test(val);
  21.     },
  22.     // vtype Text property: The error text to display when the validation function returns false
  23.     timeText: 'Not a valid time.  Must be in the format "12:34 PM".',
  24.     // vtype Mask property: The keystroke filter mask
  25.     timeMask: /[ds:amp]/i
  26. });
  27.  * </code></pre>
  28.  * Another example: 
  29.  * <pre><code>
  30. // custom Vtype for vtype:'IPAddress'
  31. Ext.apply(Ext.form.VTypes, {
  32.     IPAddress:  function(v) {
  33.         return /^d{1,3}.d{1,3}.d{1,3}.d{1,3}$/.test(v);
  34.     },
  35.     IPAddressText: 'Must be a numeric IP address',
  36.     IPAddressMask: /[d.]/i
  37. });
  38.  * </code></pre>
  39.  * @singleton
  40.  */
  41. Ext.form.VTypes = function(){
  42.     // closure these in so they are only created once.
  43.     var alpha = /^[a-zA-Z_]+$/;
  44.     var alphanum = /^[a-zA-Z0-9_]+$/;
  45.     var email = /^(w+)([-+.][w]+)*@(w[-w]*.){1,5}([A-Za-z]){2,4}$/;
  46.     var url = /(((https?)|(ftp))://([-w]+.)+w{2,3}(/[%-w]+(.w{2,})?)*(([w-.?\/+@&#;`~=%!]*)(.w{2,})?)*/?)/i;
  47.     // All these messages and functions are configurable
  48.     return {
  49.         /**
  50.          * The function used to validate email addresses.  Note that this is a very basic validation -- complete
  51.          * validation per the email RFC specifications is very complex and beyond the scope of this class, although
  52.          * this function can be overridden if a more comprehensive validation scheme is desired.  See the validation
  53.          * section of the <a href="http://en.wikipedia.org/wiki/E-mail_address">Wikipedia article on email addresses</a> 
  54.          * for additional information.  This implementation is intended to validate the following emails:<tt>
  55.          * 'barney@example.de', 'barney.rubble@example.com', 'barney-rubble@example.coop', 'barney+rubble@example.com'
  56.          * </tt>.
  57.          * @param {String} value The email address
  58.          * @return {Boolean} true if the RegExp test passed, and false if not.
  59.          */
  60.         'email' : function(v){
  61.             return email.test(v);
  62.         },
  63.         /**
  64.          * The error text to display when the email validation function returns false.  Defaults to:
  65.          * <tt>'This field should be an e-mail address in the format "user@example.com"'</tt>
  66.          * @type String
  67.          */
  68.         'emailText' : 'This field should be an e-mail address in the format "user@example.com"',
  69.         /**
  70.          * The keystroke filter mask to be applied on email input.  See the {@link #email} method for 
  71.          * information about more complex email validation. Defaults to:
  72.          * <tt>/[a-z0-9_.-@]/i</tt>
  73.          * @type RegExp
  74.          */
  75.         'emailMask' : /[a-z0-9_.-@]/i,
  76.         /**
  77.          * The function used to validate URLs
  78.          * @param {String} value The URL
  79.          * @return {Boolean} true if the RegExp test passed, and false if not.
  80.          */
  81.         'url' : function(v){
  82.             return url.test(v);
  83.         },
  84.         /**
  85.          * The error text to display when the url validation function returns false.  Defaults to:
  86.          * <tt>'This field should be a URL in the format "http:/'+'/www.example.com"'</tt>
  87.          * @type String
  88.          */
  89.         'urlText' : 'This field should be a URL in the format "http:/'+'/www.example.com"',
  90.         
  91.         /**
  92.          * The function used to validate alpha values
  93.          * @param {String} value The value
  94.          * @return {Boolean} true if the RegExp test passed, and false if not.
  95.          */
  96.         'alpha' : function(v){
  97.             return alpha.test(v);
  98.         },
  99.         /**
  100.          * The error text to display when the alpha validation function returns false.  Defaults to:
  101.          * <tt>'This field should only contain letters and _'</tt>
  102.          * @type String
  103.          */
  104.         'alphaText' : 'This field should only contain letters and _',
  105.         /**
  106.          * The keystroke filter mask to be applied on alpha input.  Defaults to:
  107.          * <tt>/[a-z_]/i</tt>
  108.          * @type RegExp
  109.          */
  110.         'alphaMask' : /[a-z_]/i,
  111.         /**
  112.          * The function used to validate alphanumeric values
  113.          * @param {String} value The value
  114.          * @return {Boolean} true if the RegExp test passed, and false if not.
  115.          */
  116.         'alphanum' : function(v){
  117.             return alphanum.test(v);
  118.         },
  119.         /**
  120.          * The error text to display when the alphanumeric validation function returns false.  Defaults to:
  121.          * <tt>'This field should only contain letters, numbers and _'</tt>
  122.          * @type String
  123.          */
  124.         'alphanumText' : 'This field should only contain letters, numbers and _',
  125.         /**
  126.          * The keystroke filter mask to be applied on alphanumeric input.  Defaults to:
  127.          * <tt>/[a-z0-9_]/i</tt>
  128.          * @type RegExp
  129.          */
  130.         'alphanumMask' : /[a-z0-9_]/i
  131.     };
  132. }();