`
小鸡啄米
  • 浏览: 38614 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

关于ajax提交后表单的reset2

阅读更多

    那天写了一篇文章用于在不提交表单的情况下,重置form的reset后的值,但是那个方法有两个缺点,而这两个缺点是致命性的,1,textarea控件没办法解决,2, ie不支持,正因为第2个原因,所以不能使用这种方法。

      但是,这种方法也提供了解决这个问题的思路:我们要在表单保存的时候,记录下当前控件的值,然后在reset的时候恢复这个值。既然浏览器做不了,只能在代码中做了。其实就是在保存的时候,用一个属性值来记录下控件的值,然后我们自己实现form的reset的方法,这个方法用来读取这个属性的值,重新赋值。

 

赋值代码:

function changeCheckValAttr(helement) {

        var checks = helement.checked;
        if (checks) {
            helement.setAttribute("origin-data", "checked");
        } else {
            helement.setAttribute("origin-data", "unchecked");
        }
    }  //用来记录类似radio,checkbox控件的值
    function changeCommonTextValAttr(helement) {
        helement.setAttribute("origin-data", helement.value);
    }  //用来记录普通空间的值 都以origin-data属性来记录

 

获取值代码:

 

 

//    select控件
function getSelectValAttr(helement) {
        var j = 0, options = helement.options, t, selVal;
        selVal = helement.getAttribute("origin-data");
        if (selVal != null) {
            for ( ; j < options.length; j++) {
                var odata = options[j]
                if (selVal == options[j].value) {
                    options[j].setAttribute("selected", "selected");
                } else {
                    options[j].removeAttribute("selected");
                }
            }
        }
    }  
    //check控件
    function getCheckValAttr(helement) {
        var checks = helement.getAttribute("origin-data");
        if (checks != null) {
            if (checks == "checked") {
                helement.setAttribute("checked", "checked");   
            } else {
                helement.removeAttribute("checked");
            }
        }
    }
   //   text
    function getCommonTextValAttr(helement) {
        var ovalue = helement.getAttribute("origin-data");
        if (ovalue != null) {
            helement.setAttribute("value", ovalue);
        }
    }
    // textarea
    function getTextAreaValAttr(helement) {
        var ovalue = helement.getAttribute("origin-data");
        if (ovalue != null) {
            helement.innerHTML = ovalue;
        }
    }

 

 主逻辑代码:

 

  
   function setOrginDataAttr(helement) {
        var tagName = helement.tagName, tagType = helement.type;
        if (tagName.toUpperCase() == "INPUT" && tagType == "text") {
            changeCommonTextValAttr(helement);
        } 
        else if (tagName.toUpperCase() == "TEXTAREA") {
            changeCommonTextValAttr(helement);
        }
        else if (tagName.toUpperCase() == "SELECT") {
            changeCommonTextValAttr(helement)
        } 
        else if (tagName.toUpperCase() == "INPUT" && tagType == "checkbox") {
            changeCheckValAttr(helement);
        } 
        else if (tagName.toUpperCase() == "INPUT" && tagType == "radio") {
            changeCheckValAttr(helement);
        }          
    }
    function getOrginDataAttr(helement) {
        var tagName = helement.tagName, tagType = helement.type;
        if (tagName.toUpperCase() == "INPUT" && tagType == "text") {
            getCommonTextValAttr(helement);
        } 
        else if (tagName.toUpperCase() == "TEXTAREA") {
            getTextAreaValAttr(helement);
        }
        else if (tagName.toUpperCase() == "SELECT") {
            getSelectValAttr(helement)
        } 
        else if (tagName.toUpperCase() == "INPUT" && tagType == "checkbox") {
            getCheckValAttr(helement);
        } 
        else if (tagName.toUpperCase() == "INPUT" && tagType == "radio") {
            getCheckValAttr(helement);
        }          
    }

    function setFormOriginDataAttrs(aform) {
        $.map(aform[0].elements, setOrginDataAttr);
     }

    function resetFormToOriginData(aform) {
        $.map(aform[0].elements, getOrginDataAttr);
    }

 

 

调用resetFormToOriginData方法之前记得调用form原生的reset方法,

以防止当前控件没有origin-data后,重置form。

分享到:
评论

相关推荐

    jQuery实现form表单reset按钮重置清空表单功能

    有时候可能需要实现这样的效果:使用ajax提交表单,成功提交表单之后清空表单,如下代码: 代码如下: &lt;form&gt; &lt;input name=”name1″ /&gt; &lt;input name=”name1″ /&gt; &lt;textarea name=”...

    input、button的不同type值在ajax提交表单时导致的陷阱

    "input、button的不同type值在ajax提交表单时导致的陷阱" 在前端开发中,我们经常遇到一些看似简单却隐藏着危险的陷阱,这篇文章就讲解了在AJAX提交表单时,input和button的不同type值可能导致的陷阱。 首先,让...

    learning extjs 中文版 表单提交

    2. **Params**: 在提交表单时,可以通过`params`配置项传递额外的参数,这些参数可以是静态值,也可以是动态计算的结果。 3. **Success and Failure Handling**: 通过设置`success`和`failure`处理器,可以处理...

    一个完美的js表单验证案例

    8. **表单重置**:当用户修正错误并重新提交表单时,可以使用`$("#form").trigger("reset")`重置表单,清空输入框和错误提示。 9. **自定义插件**:更复杂的表单验证可能需要用到一些成熟的jQuery验证插件,如...

    简单的js快速预约表单信息提交代码

    // 提交后清空表单或显示成功提示 this.reset(); }); ``` `validateEmail`是一个简单的邮箱格式验证函数,可以使用正则表达式实现: ```javascript function validateEmail(email) { var regex = /^[^\s@]+@[^\...

    第七章 JavaScript表单编程

    - 使用`reset`按钮(type="reset")或调用`form.reset()`方法可以恢复表单到初始状态。 5. **脚本访问文本框**: - 单行文本框`&lt;input type="text"&gt;`和多行文本框`&lt;textarea&gt;`用于输入文本。 - 获取文本框的值,...

    使用jQuery重置(reset)表单的方法

    此外,如果想要在某个特定事件(如按钮点击)后重置表单,可以将上述代码封装到一个函数中,然后绑定到对应的事件处理程序: ```javascript // 创建一个函数来重置表单 function resetForm() { var form = $('#...

    JS动态表单

    4. **AJAX异步提交**:动态表单往往结合AJAX技术实现无刷新提交,使用`XMLHttpRequest`对象或者现代浏览器的`fetch` API,可以在后台处理数据,无需刷新整个页面。这提高了用户体验,使得表单提交更为流畅。 5. **...

    layui清空,重置表单数据的实例

    当用户提交表单后,如果需要清空表单以便于进行下一次输入,可以调用表单元素的`reset()`方法。例如,在提供的实例中,表单的HTML代码如下: ```html 主题内容 ``` 在jQuery或原生JavaScript中,可以通过ID选择...

    jquery动态表单

    jQuery的`$.ajax()`或`$.post()`、`$.get()`等方法使得动态表单的异步提交变得简单。这能提高用户体验,因为页面无需刷新即可完成数据的提交和处理。 6. **表单序列化**: jQuery的`serialize()`方法可以将表单的...

    js表单认证大全(js表单认证大全)

    `reset()`方法用于清空表单,`preventDefault()`用于阻止默认的表单提交行为,如跳转或提交数据。 九、表单验证库 许多库如jQuery Validation、Formik、Vuelidate等提供更强大的表单验证功能,简化开发流程。 十、...

    Ext.FormPanel 提交和 Ext.Ajax.request 异步提交函数的区别

    - **表单重载**:提交过程中可以设置`reset`属性来决定是否在提交后清空表单。 示例代码: ```javascript Ext.getCmp('formPanelId').getForm().submit({ url: '......', params: { XX: xx }, success: ...

    动态控制js表单

    而非传统的表单提交方式,JS可以通过AJAX(Asynchronous JavaScript and XML)实现异步提交,这样不会刷新整个页面,提升用户体验。`XMLHttpRequest`对象或更现代的`fetch` API可用于发送HTTP请求,处理服务器返回...

    简单了解Ajax表单序列化的实现方法

    本文将深入探讨Ajax表单序列化的实现方法及其相关知识点。 首先,了解表单序列化的基本原理。当用户填写表单并点击提交按钮时,浏览器会自动将表单数据按照特定规则进行编码,并以键值对的形式发送给服务器。这些...

    表单JS例子

    6. **表单重置**:成功验证后,可以清空错误信息,或使用`form.reset()`方法重置表单状态。 7. **异步验证**:对于更复杂的验证,如检查用户名是否已存在,可以使用Ajax异步请求与服务器通信。 8. **HTML5内置验证...

    2.表单.pdf_html5_源码

    5. **按钮与提交**:`&lt;button&gt;`元素可以创建可点击的按钮,`&lt;input type="submit"&gt;`用于提交表单数据,`&lt;input type="reset"&gt;`重置表单内容。`action`和`method`属性定义了表单数据的处理方式和提交的HTTP方法(通常...

    JS强大的表单+验证

    `form.reset()`方法可以清空表单所有字段,而`form.submit()`则可触发表单提交,但在此之前,我们可以添加验证逻辑以确保数据有效。 六、AJAX异步提交 为了提高用户体验,我们通常使用AJAX进行异步表单提交,避免...

    强大的jQuery拖拽式表单设计器特效.zip

    这涉及到Ajax技术,可以实现实时保存、加载和提交表单数据,无需刷新整个页面。 7. **自定义样式**:用户通常可以通过此设计器调整表单的视觉样式,如颜色、字体、边距等,这涉及CSS的运用。设计者可能还提供了预设...

Global site tag (gtag.js) - Google Analytics