JavaScript程序库jQuery学习笔记分享(三)jQuery的表单操作和表格操作(1)表单

对于jQuery的DOM操作和事件处理,以及动画,在之后会给大家分享。

一:这里先向大家介绍一下jQuery对于表单的操作:
1.表单简介

简介:表单就是用户输入信息后用于服务器用来采集这些信息的html元素。

分类:一个表单可以基本分为表单标签(服务器url以及数据提交方法),表单域(表单类型,包括文本框,密码框,复选框,单选框,下拉框等),表单按钮(用于提交数据或者取消提交数据)三部分组成。

2.jQuery在常用表单域中的作用

下面先介绍jQuery在常用表单域中的作用。

2.1单行文本框

文本框是表单域中最基本的元素,基于文本框的应用有很多。此处只介绍如何用jQuery操作得到焦点和失去焦点事件。

首先创建一个表单:

<!DOCTYPE html>
<html>
<head>
    <title>单行文本框</title>
</head>
<body>
    <form>
        <fieldset>
            <legend>用户信息</legend>
            <div>
                <label for="name">姓名:</label>
                <input id="name" type="text">
            </div>
            <div>
                <label for="mima">密码:</label>
                <input id="mima" type="text">
            </div>
        </fieldset>
    </form>
</body>
</html>

这里用过滤选择器(:input)为文本框添加获取和失去焦点事件:
在头部加入下面代码:

<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
    <script>
        $(document).ready(function() {
            $(":input").focus(function(){
                $(this).css("background-color","#D6D6FF");
            }).blur(function(){
                $(this).css("background-color","green");
            });
        });
    </script>

效果如下:

2.2多行文本框

这里我们实现多行文本框放大和缩小以及滚动条高度变化的功能:

先创建一个表单:
 

<form>
        <div class="duoHang">
            <div class="button">
                <input id="a" type="button" value="放大"/>
                <input id="b" type="button" value="缩小"/>
            </div>
            <div>
                <textarea id="comment" rows="7" cols="25">这是一个测试文本</textarea>
            </div>
            <div>
                <input id="c" type="button" value="还原">
            </div>
        </div>
    </form>

这里需要考虑两种极限情况:
(1)当单击"放大"后,如果文本框的高度小于最大值,则在原有的基础上增加50px。

(1)当单击"缩小"后,如果文本框的高度大于最小值,则在原有的基础上减去50px。

当点击还原时,会还原为刚开始的大小。

代码如下:

<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
    <script>
        $(document).ready(function() {
            var $comment = $('#comment');  //获取文本框
            var $fangDa  = 0;
            var $suoXiao  = 0;
            $("#a").click(function(){   //"放大"单击事件
                if(!$comment.is(":animated")){
                    if($comment.height() < 500){
                        $comment.animate({height : "+=50"},500);
                        $fangDa += 1;
                    }
                }
            });
            $("#b").click(function(){   //"缩小"单击事件
                if(!$comment.is(":animated")){
                    if($comment.height() > 50){
                        $comment.animate({height : "-=50"},500);
                        $suoXiao += 1;
                    }
                }
            });
            $("#c").click(function(){
                if(!$comment.is(":animated")){
                    for(var i = 0;i < $fangDa;i++){
                        $comment.animate({height : "-=50"},500);
                    }

                    for(var j = 0;j < $suoXiao;j++){
                        $comment.animate({height : "+=50"},500);
                    }
                }
                $fangDa = 0;
                $suoXiao = 0;
            });
        });
    </script>

滚动条的代码类似,只是改变height为scrollTop即可。

2.3复选框

对复选框最基本的应用,就是对复选框进行全选,反选和全不选等操作。

下面先创建一个表单:

<form>
        你喜欢的东西是什么?<br/>
        <input type="checkbox" name="items" value="苹果"/>苹果
        <input type="checkbox" name="items" value="足球"/>足球
        <input type="checkbox" name="items" value="香蕉"/>香蕉
        <input type="checkbox" name="items" value="技术"/>技术</br>
        <input type="button" id="CheckedAll" value="全选"/>
        <input type="button" id="CheckedNo" value="全不选"/>
        <input type="button" id="CheckedRev" value="反选"/>
        <input type="button" id="send" value="提交"/>
    </form>

可以通过控制元素的checked属性来使复选框处于选中或者不选状态。可以通过attr()方法来设置属性checked的值。

代码如下:

<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
    <script>
        $(document).ready(function() {
            $("#CheckedAll").click(function(){
                $('[name=items]:checkbox').attr('checked','true');
            });
            $("#CheckedNo").click(function(){
                $('[name=items]:checkbox').attr('checked','false');
            });
            $("#CheckedRev").click(function(){
                $('[name=items]:checkbox').each(function(){
                    this.checked = !this.checked;
                });
            });

            //复选框被选中后,用于单击"提交"按钮,需要将选中的项的值输出,可以通过
            //val()方法获取选中的值
            $("#send").click(function(){
                var myStr = "你选中的是:\r\n";
                $('[name=items]:checkbox:checked').each(function(){
                    myStr += $(this).val() + "\r\n";
                });
                alert(myStr);
            });
        });
    </script>

效果如下:

这里尝试用一个复选框来代替全选和全不选,表单修改为如下:

<form>
        你喜欢的东西是什么?<br/>
        <input type="checkbox" id="CheckedAll"/>全选/全不选<br/>
        <input type="checkbox" name="items" value="苹果"/>苹果
        <input type="checkbox" name="items" value="足球"/>足球
        <input type="checkbox" name="items" value="香蕉"/>香蕉
        <input type="checkbox" name="items" value="技术"/>技术</br>
        <input type="button" id="send" value="提交"/>
    </form>

可以加上下面代码:
 

$("#CheckedAll").click(function(){
                $('[name=items]:checkbox').attr('checked','this.checked');
            });

这里还需要将它和复选框组联系起来,如果复选框组有一个以上没有选中,就取消选中状态;如果复选框组都被选中,则新增的复选框也自动被选中。

这里可以定义一个中间变量flag进行循环判断,或者判断复选框单击总数是否与选中的复选框数量相等。代码如下:

$('[name=items]:checkbox').click(function(){
                var flag = true;
                $('[name=items]:checkbox').each(function(){
                    if(!this.checked){
                        flag = false;
                    }
                });
                $('#CheckedAll').attr('checked',flag);

                //或者如下代码
                var $temp = $('[name=items]:checkbox');
                if($temp.length==$temp.filter(':checked').length){
                    $('#CheckedAll').attr('checked',true);
                }
            });

2.4下拉框

这里介绍实现通过按钮实现将左边选中的选项添加到右边,以及将右边的选项添加到左边,或者双击选项,添加给对方。

下面先创建两个下拉框和多个按钮:
 

<!DOCTYPE html>
<html>
<head>
    <title>单行文本框</title>
</head>
<body>
    <div class="xiaLaKuang">
        <select multiple id="select1" style="width:100px;height:160px;">
            <option value="one"> A </option>
            <option value="two"> B </option>
            <option value="three"> C </option>
            <option value="four"> D </option>
            <option value="five"> E </option>
            <option value="six"> F </option>
            <option value="seven"> G </option>
        </select>
        <div>
            <span id="add_right">选中添加到下边</span>
            <span id="add_right_all">添加全部到下边</span>
        </div>
    </div>
    <div class="xiaLaKuang">
        <select multiple id="select2" style="width:100px;height:160px;">
        </select>
        <div>
            <span id="add_left">选中添加到上边</span>
            <span id="add_left_all">添加全部到上边</span>
        </div>
    </div>
</body>
</html>

实现这些功能的代码如下:
 

<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
    <script>
        $(document).ready(function() {
            //将选中的值添加到对方
            $("#add_right").click(function(){
                var $options1 = $('#select1 option:selected');
                $options1.appendTo('#select2');
            });
            $("#add_left").click(function(){
                var $options2 = $('#select2 option:selected');
                $options2.appendTo('#select1');
            });
            //将全部的选项添加给对方
            $('#add_right_all').click(function(){
                var $options1 = $('#select1 option');
                $options1.appendTo('#select2');
            })
            $('#add_left_all').click(function(){
                var $options1 = $('#select2 option');
                $options1.appendTo('#select1');
            })
            //双击某个选项添加给对方
            $('#select1').dblclick(function() {
                var $options1 = $('option:selected',this);
                $options1.appendTo('#select2');
            });
            $('#select2').dblclick(function() {
                var $options2 = $('option:selected',this);
                $options2.appendTo('#select1');
            });
        });
    </script>

效果如下:

猜你喜欢

转载自blog.csdn.net/ITxiaoangzai/article/details/87533050
今日推荐