当前位置: 首页 - 编程技术 - 文章正文

使用jQuery制作高级表单

xiaoqihv

1、 启用或禁用表单元素:

html代码:<input  type="text" id = "name-input" />

添加一条代码禁用上面的表单:$("#name-inout").attr("disabled",true);

如果要启用表单,则把disabled属性设置成false即可

2、突出显示表单当前项:

html代码:<input type=‘text“ id= ”email-input“  />

CSS样式:.highlight{background:yellow;padding:5px;}

jQuery代码:$('input').bind('focus',function(){

                             $(this).addClass('highlight');

                       });   //当input元素得到焦点时,这个输入项就会自动应用highlight类

                      $('input').bind('blur',function(){

                             $(this).removeClass('highlight');

                       });   //当input元素失去焦点时,这个输入项就会移除highlight类

3、为文本框设置默认文本:

(1)、html代码:<input type=‘text“ id= ”email-input“ value="Search"  />

(2)、创建一个变量,存放计划显示在文本框的默认值:var defaultText ="Search";

(3)、选中#email-input元素。然后绑定focus事件处理函数:

             $("#email-input").bind('focus',function(){  });

(4)、在focus事件处理函数中,添加一条if语句检查文本框的值。如果文本框有值并且它的值与defaultText相同,清除文本框的值

              $("#email-input").bind('focus',function(){                     if($(this).val() == defaultText){

                          $(this).val(' ');

                    }

                    $(this).css('color','#333');

              });

(5)、接下来设置#email-input失去焦点时要触发的blur事件。同样需要添加一条if语句检查this的值。如果没有内容,则设置成defaultText。

             $("#email-input").bind('blur',function(){                     if($(this).val() ==' '){

                          $(this).val(defaultText);

                    }

                    $(this).css('color','#fff');

              });

4、限制文本输入框的字数:

(1)、html文档:<textarea cols ="50" rows="5" id= "status"></textarea>

(2)、添加一个空白的div#content元素,用它存放输入字符过程中计算出来的剩余字符数:<div id= "counter"></div>

(3)、新建一个变量maxNum,保存允许输入的最大字符数,这里设置成100:var maxNum=100;

(4)、选中#status元素,然后为它绑定keypress事件处理函数。keypress事件发生于一个键被按下然后释放时,它是检测文本框中用户输入的最佳事件

             $('#status').bind({

                  keypress:function(){

                  }

             });

(5)、当keypress事件发生时,我们需要捕获#status输入框中的内容。创建一个变量inputText保存输入框的值,在创建一个变量numChar保存inputText的length属性。在创建一个变量charRemain,保存剩余字符数

             $('#status').bind({

                  keypress:function(){

                       var inputText=$(this).val();

                       var numChar = inputText.length;

                       var charRemain =numChar-maxNum;

                  }

             });

(6)、初始化这些变量之后,再加一个条件语句检查numChar是否小于等于maxNum。如果小于等于,就选中,并修改它的文本为剩余字符数

             $('#status').bind({

                  keypress:function(){

                       var inputText=$(this).val();

                       var numChar = inputText.length;

                       var charRemain =numChar-maxNum;

                       if(numChar <=maxNum){

                           $('#counter').text(charRemain);

                       }

                  }

             });

(7)、最后再加一条语句检查numChar是否大于maxNum,如果为真,使用event.preventDefault()阻止用户输入更多字符

            $('#status').bind({

                  keypress:function(){

                       var inputText=$(this).val();

                       var numChar = inputText.length;

                       var charRemain =numChar-maxNum;

                       if(numChar <=maxNum){

                           $('#counter').text(charRemain);

                       }

                      else if(numChar>maxNum){

                           event.preventDefault();

                      }

                  }

             });

5、实现复选框的全选功能:

(1)、准备5个复选框元素,并添加一个复选框用来控制5个复选框的选中或反选

<input type="checkbox" id="checkall" /> <label>Check all</label> <ul id="form-fields">   <li><input name="check1" class="check" type="checkbox"/> <label>Checkbox 1</label></li>   <li><input name="check2" class="check" type="checkbox"/> <label>Checkbox 2</label></li>   <li><input name="check2" class="check" type="checkbox"/> <label>Checkbox 3</label></li>   <li><input name="check2" class="check" type="checkbox"/> <label>Checkbox 4</label></li>   <li><input name="check2" class="check" type="checkbox"/> <label>Checkbox 5</label></li>   </ul>

(2)、选中#checkall元素,为它绑定click事件

             $('checkall').bind('click',function(){ });

(3)、新建变量checkboxes选中所有li元素并在其中寻找所有.check元素,然后将匹配的结果集保存到变量checkboxes中

             $('checkall').bind('click',function(){

                 var  checkboxes = $('form-fields input');

             });

(4)、如果还需要取消全选功能,可以加一条if / else语句检查#checkAll元素的状态,选中就保存在checkboxes变量中的复选框结果集中的每一个复选框的checked属性为true,否则就设置为false

             $('checkall').bind('click',function(){

                 var  checkboxes = $('form-fields input');

                 if (this.checked){

                     checkboxes.attr('checked','true');

                 } else{

                     checkboxes.attr('checked','false');

                 }

             });

6、简单验证表单中的电子邮件:

(1)、首先创建一个简单的电子邮件表单,只有一个输入框和一个Submit按钮

<div id="email-form">   <input type="text" id="email-input"/>   <input type="submit" value="Submit" id="email-submit"/> </div>

(2)、选中#email-submit按钮并为它绑定click事件处理函数。在click事件处理函数中添加一条return  false语句,这就确保了用户在单击Submit按钮时,脚本会终止表单默认的提交行为

           $(" #email-submit").bind('click', function(){

               return false;

           });

(3)、创建一个变量emailReg,然后把检测电子合法性的正则表达式赋值给这个新变量:

           $(" #email-submit").bind('click', function(){

      var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;

               return false;

           });

(4)、创建一个email变量,将email-input的值赋给他:

          $(" #email-submit").bind('click', function(){

      var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;

              var email=$("#email-input").val();

               return false;

           });

(5)、选中email-form元素并在表单内容之前插入一个div.error。使用它存放必要时传递给用户的出错信息

         $(" #email-submit").bind('click', function(){

      var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;

              var email=$("#email-input").val();

              $('email-form').prepend('<div class= "error"></div>');

               return false;

           });

(6)、添加一条else if语句,当用户单击Submit按钮时检查用户是否键入内容

         $(" #email-submit").bind('click', function(){

      var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;

              var email=$("#email-input").val();

              $('email-form').prepend('<div class= "error"></div>');

              if(email==' '){

              } else if{

              } else{

              }

               return false;

           });

(7)、在if子句中,选中div.error元素,替换成错误格式信息。else if子句中换成错误格式信息,else子句中告诉用户他们已经成功订阅

         $(" #email-submit").bind('click', function(){

      var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;

              var email=$("#email-input").val();

              $('email-form').prepend('<div class= "error"></div>');

              if(email==' '){

                    $(".error").replaceWith('<div class="error">You forgot to enter an email address.</div>');

              } else if{

                    $(".error").replaceWith('<div class="error">Please enter a valid email address.</div>');

              } else{

     $("#email-form").html('<div class="success">Thank you, you have been subscribed.</div>'); 

              }

               return false;

           });

下面是改进这个脚本的建议:

(1)、如果希望在用户输入数据时实现实时检测,可以把绑定Submit按钮上的click事件改为绑定到input元素上的change事件。这样的话就要再加一些代码,以保证用户看到正确的提示信息

(2)、若用户提交了错误格式的电子邮件地址,为电子邮件输入框增加突出显示效果

(3)、下面是常用的正则表达式为表单添加更多的字段,验证其他数据类型的数据

电话号码:(/^[0-9-+]+$/)

日期:(/^\d{1,2}\ / \d{4}$/)

仅数字:(^[0-9]+$)

仅字母:(^[A-Za-z]+$)

文章地址:https://wenmayi.cn/post/1005.html