`

JQuery-Form表单中默认值的改变

阅读更多

最近修改一个 js 函数,却发现自己需要学习的还很多

函数的主要目的是想知道 form 表单中的值有没有被改变,原来的函数采用的是 if…else/if 结构,在这里,我还是把代码贴出来吧:

// 函数 ;

function IsFormChanged(name) {

       var isChanged = false;

//     var form = document.getElementById(name);

       var form = document.forms[name];

       for (var i = 0; i < form.elements.length; i++) {

              var element = form.elements[i];

              var type = element.type;

              if (type == "text" || type == "hidden" || type == "textarea" || type == "button") {

                     if (element.value != element.defaultValue) {

                            isChanged = true;

                            alert("1");

                            break;

                     }

              } else if (type == "radio" || type == "checkbox") {

                     if (element.checked != element.defaultChecked) {

                            isChanged = true;

                            alert("2");

                            break;

                     }

              } else if (type == "select-one"|| type == "select-multiple") {

                     for (var j = 0; j < element.options.length; j++) {

                            if (element.options[j].selected != element.options[j].defaultSelected) {

                                   isChanged = true;

                                   alert("3");

                                   break;

                            }

                     }

              } else {

                     // etc...

              }     

       }   

       alert( isChanged?" 你改变了表单的默认值 ":" 表单的值没有改变 ");

       return isChanged;

}

       这个函数思路很清晰了,但是,我准备采用另外一个方式来重写它,我采用的是 switch ,于是,一开始,我把 if…else/if 都改成 switch ,可是,发现不能验证,后来,我发现了: for 循环中使用 switch ,然后用 break 的话,退出来的是 switch 结构,循环还要继续的,而我需要的是直接退回 for 循环。上网找了一些解决办法,最后发现把 switch 部分的分离出来单独写成一个函数比较好,但是,考虑到这个函数最终只会在一个函数中使用,就是我们的判断 form 表单默认值的函数,而且,由于项目开发的需要,我把一些公用的函数都封装起来,所以,最后我把函数改写成了如下的形式:

       var Form={

       IsFormChanged:function(id){

       /*IsFormChangedCase 这个函数我本来是放在外面的,和 IsFormChanged 的级别是一样的,但是现在只有 IsFormChanged 这个函数使用这个,其原因是因为 switch for 中都是用 break 的缘故,所以,我最终把这个函数作为 IsFormChanged 函数的一个变量来使用。

       */

              var IsFormChangedCase=function(element){

              var isChanged = false;

              switch(element.type){

                     case "text":

                     case "hidden":

                     case "textarea":

                     case "button":

                            if(element.value != element.defaultValue)

                                   isChanged= true;

                            break;

                     case "radio":

                     case "checkbox":

                            if(element.checked != element.defaultChecked)

                                   isChanged= true;

                            break;

                     case "select-one":

                     case "select-multiple":

                            for (var j = 0; j < element.options.length; j++){

                                   if(element.options[j].selected != element.options[j].defaultSelected){

                                          isChanged= true;

                                          break;

                                   }

                            }

                            break;

                     }

                     return isChanged;  

              };

              var str=false;

              var form = document.getElementById(id);

              for (var i = 0; i < form.elements.length; i++){

                     var element = form.elements[i];

                     if(IsFormChangedCase(element)){

                            str=true;

                            break;

                     }

              }

              return str;      

       }

}

// 这个只是测试函数

function test()

{

       var ret=Form.IsFormChanged("frm2");

       alert( ret?" 你改变了表单的默认值 ":" 表单的值没有改变 ");

       return ret;

}

 

http://www.codestore.net/store.nsf/unid/DOMM-4UTKE6

分享到:
评论

相关推荐

    【开源】jQuery oform beta 0.1.5 - form 表单美化插件源代码

    jQuery oform beta 0.1.5 - form 表单美化插件源代码 版权:zhang yang soft 交流E-Mail:oceancode@163.com 浏览器支持:IE、Firefox、Opera , google chrome (谷歌) 版本说明: 1. beta 0.1.0 版 支持input...

    【开源】jQuery oform beta 0.1.7 - form 表单美化插件源代码

    版权:zhang yang soft ...浏览器支持:IE、Firefox、Opera , google chrome (谷歌) 版本说明: 1. beta 0.1.0 版 支持input text/button 美化 时间:2010-01-25 ...jquery oform 美化 插件 开源

    jQuery ajax提交Form表单实例(附demo源码)

    本文实例讲述了jQuery ajax提交Form表单的方法。分享给大家供大家参考,具体如下: Jquery的$.ajax方法可以实现ajax调用,要设置url,post,参数等。 如果要提交现有Form需要写很多代码,何不直接将Form的提交直接转移...

    jquery控制表单输入框显示默认值的方法

    本文实例讲述了jquery控制表单输入框显示默认值的方法。分享给大家供大家参考。具体实现方法如下: &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; [removed][removed] [removed] $(document).ready(function() { ...

    jquery-formtips:一个 jQuery 插件,使表单能够将默认值或消息绘制到 inputtextarea 元素中

    它使表单能够将默认值或消息绘制到 input/textarea 元素中。 文本是从元素的标题属性中获取的。 我怎样才能使用这个插件? 当然,首先您需要当前版本的 jQuery 库。 转到 jQuery 网站并获取一份副本。 接下来,...

    jQuery插件之jQuery.Form.js用法实例分析(附demo示例源码)

    本文实例讲述了jQuery插件之jQuery.Form.js用法。...即将所有表单中的字段恢复到页面加载时的默认值。 疑问:ajaxForm()与ajaxSubmit()的区别: 答案:$(“#form1”).ajaxForm(); 相当于以下两行: $

    jquery-1.1.3 效率提高800%

    在jQuery 1.2版本中,如果你指明了一个JSONP回调函数,你就可以从其它的域中载入JSON类型的数据,写法类似于 "myurl?callback=?" 。jQuery会自动调用正确的方法名称来代替查询字符串,执行你指定的回调函数。...

    dust-ajaxForm:一个 jQuery 插件,用于添加 ajax-ify 表单

    用于添加 ajax-ify 表单的 jQuery 插件。 它能做什么 你有一个表格。 提交表单时,您需要进行一些 PHP 处理,但您不想离开页面。 该插件使用 ajax 提交表单,返回响应,并相应地调用成功、失败和工作方法。 所以它...

    jquery-ajax-validation

    jQuery AJAX表单验证 预期数据格式 { " success " : false , " errors " : { " email " : [ " Email is not valid " ], " password " : [ " Password is not valid " , " Password is too short " ] } } 选项 ...

    form-validate.js:jQuery 驱动的表单验证

    form-validate.js 是一个用于验证表单的简单脚本(顾名思义)。 要使用它,只需使用带有.validate()方法的 jQuery 选择器: $ ( "#myForm" ) . validate ( ) ; 这将为表单设置onsubmit处理程序。 这意味着无论...

    jquery.debounceSubmit:阻止双击多次提交表单的 jQuery 插件

    $.fn.debounce提交阻止双击多次提交表单的 jQuery 插件。描述提交表单后,此插件将禁用它 750 毫秒以防止重复提交表单。 等待 750 毫秒后,表单将重新启用(如果有人使用“Esc”来阻止表单提交,这一点很重要)示例...

    Zebra_Form表单类 v2.9.4.zip

    Zebra_Form 是一个 PHP 类用于简化表单的创建和数据验证的php表单类。   Zebra_Form 2.9.4 更新日志: ◾修正在那里提交的值是通过PHP的“ヶ辆”传递函数只有在元素的“ disable_xss_filters ”属性未设置为TRUE...

    dust-searchForm:一个简单的 jQuery 插件,用于为搜索表单添加不错的功能

    灰尘搜索表一个简单的 jQuery 插件,用于为搜索表单添加不错的功能。它有什么作用? 所以你有一个文本输入和一个提交。 您单击提交而不首先关注文本输入。 此插件将阻止提交,而是专注于为您输入文本。 :)如何使用您...

    json-editor:一个将JSON模式转换为表单的jquery插件

    它仅取决于jQuery。 可以在拖曳模式下使用:属性网格(当前实现)/常规形式(路线图)。 易于自定义CSS。 支持的输入:text / checkbox / textarea / html / color / date / number / radio / select。 验证...

    TsForm:jQuery表单验证插件

    清空表单: $("#form").TsFormReset(); 属性: minlength:最短长度,多选框最少选择数量 maxlength:最长长度,多选框最多选择数量 ph:placeholder默认值 dv:默认值 em:错误信息 cp:对比对象  ie:#id (两者选填一项) ...

    jQuery formValidator 表单校验插件 4.1.0

    a、在你要校验的表单页面中引入代码生成器的脚本。 b、调用函数。如果已经写了校验代码,请在校验代码注册完成后调用。 $.formValidatorTools.openTools(); 压缩包相关变更 1、所有的帮助、范例制作成了chm...

    JQUERY表单暂存功能插件分享

    jquery.formLocalStorage 是一个实现通用表单暂存功能的jquery插件 原理: 监控表单域变化,并使用HTML5 WebStorage中的localStorage来存储这些有变化的表单域的值,并在从新加载表单时将存储的值载入回表单域中,...

    jQuery详细教程

    您也许已经注意到在我们的实例中的所有 jQuery 函数位于一个 document ready 函数中: $(document).ready(function(){ --- jQuery functions go here ---- }); 这是为了防止文档在完全加载(就绪)之前运行 jQuery...

    Zebra_Form 2.9.4.zip

    Zebra_Form是一个用于简化表单的创建和数据验证的PHP类。 Zebra_Form 2.9.4 更新日志: ◾修正在那里提交的值是通过PHP的“ヶ辆”传递函数只有在元素的“ disable_xss_filters ”属性未设置为TRUE , potentialy...

    jQuery LigerUI V1.1.0

    [增加]增加表单提示气泡插件,结合表单验证使用,在demo中提供表单验证的一个解决方案 [优化]优化表单,每个表单插件(ligerTextBox、ligerSpinner等)可以通过属性ligerui自动加载参数,如ligerui="{width:200}" ...

Global site tag (gtag.js) - Google Analytics