zoukankan      html  css  js  c++  java
  • hidden表单值无法重置的缺陷

    在项目开发过程中发现form表单控件中的hidden表单组件无法被form自带的reset函数重置未默认值所以针对hidden组件进行以下测试代码如下 :

    <!DOCTYPE html>
    <html>
    
    <head>
        <meta charset="utf-8">
        <title>Test</title>
    </head>
    
    <body>
        <form id="form1" action="">
            <input id="hidden1" type="hidden" value="DefaultValue">
            <input id="text1" type="text">
            <button  type="button" onclick="changeHiddenValue()">改变hidden表单的值</button>
            <button  type="button" onclick="getHiddenValue()">获取hidden表单的值</button>
            <button  type="button"  onclick="getHiddenValueAttribute()">获取hidden表单中默认的value属性的值</button>
            <button  type="button"  onclick="resetHidden()">重置hidden表单</button>
            <button  type="reset">重置</button>
        </form>
        <script>
            (function(){ 
                getHiddenValue();
            })();
    
            function changeHiddenValue(){ 
                var text = document.getElementById('text1');
                var hidden = document.getElementById('hidden1');
                hidden.value = text.value
            }
            function getHiddenValue(){ 
                var text = document.getElementById('text1');
                var hidden = document.getElementById('hidden1');
                text.value = hidden.value;
            }
            function resetForm(){ 
                var form = document.getElementById("form1");
                form.reset();
                getHiddenValue();
            }
            function getHiddenValueAttribute(){ 
                var text = document.getElementById('text1');
                var hidden = document.getElementById('hidden1');
                alert(hidden.getAttribute("value"));
                text.value = hidden.getAttribute("value");
            }
        </script>
    </body>
    
    </html>
    

    测试结果是,form表单自带的reset方法以及type的reset的button均存在无法重置hidden表单的值的bug;故进行form重置时要对hidden表单进行特殊处理,使其恢复默认值


    如何解决这个缺陷

    其实可以依赖各种不同的form插件等插件内部的form表单的reset方法其实已经针对这个缺陷进行了一定程度的修复
    jquery.form.js是一个全面支持表单的jQuery插件
    其中包含了以下方法

    • clearForm(includeHidden)
    • clearFields(includeHidden)
    • clearInputs(includeHidden)

    其中内部勉强可以将hidden表单清空,但是依旧无法对hidden表单进行重置,使其恢复默认值

  • 相关阅读:
    MYSQL数据库基于MHA的高可用
    2019.9.20 Tomcat部署SL商城系统并连接MariaDB数据库
    2019.9.20 nginx+tomcat的负载均衡集群
    2019.9.20 tomcat自定义网站测试
    2019.9.20 Tomcat 安装和jdk的解压
    2019.9.19 tomcat 虚拟主机
    2019.9.19 tomcat配置ssl加密
    2019.9.18 nfs共享与动静分离
    2019.9.17 用户访问网站过程
    2019.9.17 awk上课总结
  • 原文地址:https://www.cnblogs.com/linbingcheng/p/6804527.html
Copyright © 2011-2022 走看看