美文网首页
runoob js第八天

runoob js第八天

作者: 似是懂 | 来源:发表于2019-04-24 14:24 被阅读0次

    JavaScript 表单验证

    JavaScript 表单验证
    avaScript 可用来在数据被送往服务器前对 HTML 表单中的这些输入数据进行验证。
    表单数据经常需要使用 JavaScript 来验证其正确性:

    • 验证表单数据是否为空?
    • 验证输入是否是一个正确的email地址?
    • 验证日期是否输入正确?
    • 验证表单输入内容是否为数字型?
      必填(或必选)项目
      下面的函数用来检查用户是否已填写表单中的必填(或必选)项目。假如必填或必选项为空,那么警告框会弹出,并且函数的返回值为 false,否则函数的返回值则为 true(意味着数据没有问题)
    function validateForm()
    {
      var x=document.forms["myForm"]["fname"].value;
      if (x==null || x=="")
      {
        alert("姓必须填写");
        return false;
      }
    }
    以上函数在 form 表单提交时被调用
    <form name="myForm" action="demo-form.php" onsubmit="return validateForm()" method="post">
    姓: <input type="text" name="fname">
    <input type="submit" value="提交">
    </form>
    

    E-mail 验证
    输入的数据必须包含 @ 符号和点号(.)。同时,@ 不可以是邮件地址的首字符,并且 @ 之后需有至少一个点号

    function validateForm(){
      var x=document.forms["myForm"]["email"].value;
      var atpos=x.indexOf("@");
      var dotpos=x.lastIndexOf(".");
      if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length){
        alert("不是一个有效的 e-mail 地址");
        return false;
      }
    }
    下面是连同 HTML 表单的完整代码
    <form name="myForm" action="demo-form.php" onsubmit="return validateForm();" method="post">
        Email: <input type="text" name="email">
        <input type="submit" value="提交">
    </form>
    

    JavaScript 验证 API

    约束验证 DOM 方法

    checkValidity() 
    如果 input 元素中的数据是合法的返回 true,否则返回 false。
    
    setCustomValidity() 
    设置 input 元素的 validationMessage 属性,用于自定义错误提示信息的方法。
    使用 setCustomValidity 设置了自定义提示后,validity.customError 就会变成true,则 checkValidity 总是会返回false。如果要重新判断需要取消自定义提示,方式如下:
    setCustomValidity('') 
    setCustomValidity(null) 
    setCustomValidity(undefined)
    

    以下实例如果输入信息不合法,则返回错误信息

    checkValidity() 方法
    <input id="id1" type="number" min="100" max="300" required>
    <button onclick="myFunction()">验证</button>
    <p id="demo"></p>
    
    <script>
    function myFunction() {
        var inpObj = document.getElementById("id1");
        if (inpObj.checkValidity() == false) {
     document.getElementById("demo").innerHTML = inpObj.validationMessage;
        }
    }
    </script>
    

    约束验证 DOM 属性

    validity            布尔属性值,返回 input 输入值是否合法
    validationMessage   浏览器错误提示信息
    willValidate        指定 input 是否需要验证
    

    Validity 属性
    input 元素的 validity 属性包含一系列关于 validity 数据属性

    customError     设置为 true, 如果设置了自定义的 validity 信息。
    patternMismatch 设置为 true, 如果元素的值不匹配它的模式属性。
    rangeOverflow   设置为 true, 如果元素的值大于设置的最大值。
    rangeUnderflow  设置为 true, 如果元素的值小于它的最小值。
    stepMismatch    设置为 true, 如果元素的值不是按照规定的 step 属性设置。
    tooLong         设置为 true, 如果元素的值超过了 maxLength 属性设置的长度。
    typeMismatch    设置为 true, 如果元素的值不是预期相匹配的类型。
    valueMissing    设置为 true,如果元素 (required 属性) 没有值。
    valid           设置为 true,如果元素的值是合法的。
    

    如果输入的值大于 100,显示一个信息
    如果输入的值小于 100,显示一个信息

    <input id="id1" type="number" min="100" required>
    <button onclick="myFunction()">OK</button>
    <p id="demo"></p>
     
    <script>
    function myFunction() {
        var txt = "";
        var inpObj = document.getElementById("id1");
        if(!isNumeric(inpObj.value)) {
            txt = "你输入的不是数字";
        } else if (inpObj.validity.rangeUnderflow) {
            txt = "输入的值太小了";
        } else {
            txt = "输入正确";
        }    document.getElementById("demo").innerHTML = txt;
    }
    // 判断输入是否为数字
    function isNumeric(n) {
        return !isNaN(parseFloat(n)) && isFinite(n);
    }
    </script>
    

    JavaScript 保留关键字

    一些标识符是保留关键字,不能用作变量名或函数名
    JavaScript 标准
    ECMAScript 5(ES5,2009 年发布),是 JavaScript 最新的官方版本
    JavaScript 保留关键字
    Javascript 的保留关键字不可以用作变量、标签或者函数名。有些保留关键字是作为 Javascript 以后扩展使用

    abstract  arguments  boolean     break     byte
    case      catch      char        class*   const
    continue  debugger   default     delete   do
    double    else       enum*       eval     export*
    extends*  false      final       finally  float
    for       function   goto        if       implements
    import*   in         instanceof  int      interface
    let       long       native      new      null
    package   private    protected   public   return
    short     static     super*      switch   synchronized
    this      throw      throws      transient  true
    try       typeof     var         void       volatile
    while     with       yield
    * 标记的关键字是 ECMAScript5 中新添加的。        
    

    JavaScript 对象、属性和方法
    避免使用 JavaScript 内置的对象、属性和方法的名称作为 Javascript 的变量或函数名

    Array     Date     eval     function      hasOwnProperty
    Infinity  isFinite isNaN    isPrototypeOf length
    Math      NaN      name     Number        Object
    prototype String   toString undefined     valueOf
    

    Java 保留关键字
    避免使用一些 Java 对象和属性作为 JavaScript 标识符

    getClass    java       JavaArray    
    javaClass   JavaObject JavaPackage
    

    Windows 保留关键字
    在 HTML 中,必须(为了可移植性,您也应该这么做)避免使用 HTML 和 Windows 对象和属性的名称作为 Javascript 的变量及函数名

    alert        all             anchor      anchors          area
    assign       blur            button      checkbox         clearInterval
    clearTimeout clientInformation  close    closed           confirm
    constructor  crypto           decodeURI  decodeURIComponent defaultStatus
    document     element         elements    embed            embeds
    encodeURI    encodeURIComponent escape   even             fileUpload
    focus        form            forms       frame            innerHeight
    innerWidth   layer           layers      link             location
    mimeTypes    navigate        navigator   frames           frameRate
    hidden       history         image       images           offscreenBuffering
    open         opener          option      outerHeight      outerWidth
    packages     pageXOffset     pageYOffset parent           parseFloat
    parseInt     password        pkcs11      plugin           prompt
    propertyIsEnum radio         reset       screenX          screenY
    scroll       secure          select      self             setInterval
    setTimeout   status          submit      taint            text
    textarea     top             unescape    untaint          window
    

    HTML 事件句柄
    避免使用 HTML 事件句柄的名称作为 Javascript 的变量及函数名

    onblur    onclick    onerror      onfocus
    onkeydown onkeypress onkeyup      onmouseover
    onload    onmouseup  onmousedown  onsubmit
    

    非标准 JavaScript
    const 关键字,用于定义变量。 一些 JavaScript 引擎把 const 当作 var 的同义词。另一些引擎则把 const 当作只读变量的定义。
    Const 是 JavaScript 的扩展。JavaScript 引擎支持它用在 Firefox 和 Chrome 中。但是它并不是 JavaScript 标准 ES3 或 ES5 的组成部分。建议:不要使用它。

    相关文章

      网友评论

          本文标题:runoob js第八天

          本文链接:https://www.haomeiwen.com/subject/xfvmgqtx.html