zoukankan      html  css  js  c++  java
  • jQuery-3.事件篇---表单事件

    jQuery表单事件之blur与focus事件

    在之前2.8与2.9节我们学过了表单处理事件focusin事件与focusout事件,同样用于处理表单焦点的事件还有blur与focus事件

    它们之间的本质区别:

    是否支持冒泡处理

    举个简单的例子

    <div>
      <input type="text" />
    </div>

    其中input元素可以触发focus()事件

    div是input的父元素,当它包含的元素input触发了focus事件时,它就产生了focusin()事件。

    focus()在元素本身产生,focusin()在元素包含的元素中产生

    blur与focusout也亦是如此

      <h4>.focusin与blur</h4>
        <div class="left">
            <div class="aaron">
                点击触发焦点(无反应):
                <input type="text" />
            </div>
            <div class="aaron1">
                点击触发焦点并冒泡:
                <input type="text" />
            </div>
        </div>
        <script type="text/javascript">
        $(".aaron").focus(function() {
            $(this).css('border', '2px solid red')
        })
        $(".aaron1").focusin(function() {
            $(this).find('input').val('冒泡捕获了focusin事件')
        })
        </script>


        <h4>.focusout与blur</h4>
        <div class="right">
            <div class="aaron3">
                点击触发失去焦点(无反应):
                <input type="text" />
            </div>
            <div class="aaron4">
                点击触发失去焦点并冒泡:
                <input type="text" />
            </div>
        </div>
        <script type="text/javascript">
        $(".aaron3").blur(function() {
            $(this).css('border', '2px solid red')
        })
        $(".aaron4").focusout(function() {
            $(this).find('input').val('冒泡捕获了focusout事件')
        })

        </script>

    jQuery表单事件之change事件

    <input>元素,<textarea>和<select>元素的值都是可以发生改变的,开发者可以通过change事件去监听这些改变的动作

    input元素

    监听value值的变化,当有改变时,失去焦点后触发change事件。对于单选按钮和复选框,当用户用鼠标做出选择时,该事件立即触发。

    select元素

    对于下拉选择框,当用户用鼠标作出选择时,该事件立即触发

    textarea元素

    多行文本输入框,当有改变时,失去焦点后触发change事件

    change事件很简单,无非就是注意下触发的先后行为

    <h2>input、textarea与select</h2>
        <div class="left">
            <div class="aaron">input:
                <input class="target1" type="text" value="监听input的改变" />
            </div>
            <div class="aaron1">select:
                <select class="target2">
                    <option value="option1" selected="selected">Option 1</option>
                    <option value="option2">Option 2</option>
                </select>
            </div>
            <div class="aaron3">textarea:
                <textarea class="target2" rows="3" cols="20">多行的文本输入控件</textarea>
            </div>
        </div>
        输出结果:
        <div id="result"></div>
        <script type="text/javascript">
        
        //监听input值的改变
        $('.target1').change(function(e) {
            $("#result").html(e.target.value)
        });

        //监听select:
        $(".target2").change(function(e) {
            $("#result").html(e.target.value)
        })

         //监听textarea:
        $(".target3").change(function(e) {
            $("#result").html(e.target.value)
        })
        </script>

    jQuery表单事件之select事件

    当 textarea 或文本类型的 input 元素中的文本被选择时,会发生 select 事件。
    这个函数会调用执行绑定到select事件的所有函数,包括浏览器的默认行为。可以通过在某个绑定的函数中返回false来防止触发浏览器的默认行为。

    select事件只能用于<input>元素与<textarea>元素

    使用上非常简单:

    方法一:.select()

    触发元素的select事件:

    $("input").select();
    

    方法二:$ele.select( handler(eventObject) )

    绑定$ele元素,每次$ele元素触发点击操作会执行回调 handler函数

    这样可以针对事件的反馈做很多操作了

    <input id="test" value="文字选中"></input>
    $("#test").select(function() { //响应文字选中回调
        //this指向 input元素 
    });

    方法三:$ele.select( [eventData ], handler(eventObject) )

    使用与方法二一致,不过可以接受一个数据参数,这样的处理是为了解决不同作用域下数据传递的问题

    <input id="test" value="文字选中"></input>
    $("#test").select(11111,function(e) {//响应文字选中回调
        //this指向 div元素 
       //e.data  => 11111 传递数据
    });

    <h2>input与textarea</h2>
        <div class="left">
            <h4>测试一</h4>
            <div class="aaron">
                选中文字:input
                <input type="text" value="慕课网" />
            </div>
            <button id="bt1">触发input元素的select事件</button>
            
            <h4>测试二</h4>
            <div class="aaron">
                textarea:
                <textarea rows="3" cols="20">用鼠标选中文字</textarea>
            </div>
        </div>
     
        <script type="text/javascript">

        //监听input元素中value的选中
        //触发元素的select事件
        $("input").select(function(e){
            alert(e.target.value)
        })
        $("#bt1").click(function(){
            $("input").select();
        })


        //监听textarea元素中value的选中
        $('textarea').select(function(e) {
            alert(e.target.value);
        });

        </script>

    jQuery表单事件之submit事件

    提交表单是一个最常见的业务需求,比如用户注册,一些信息的输入都是需要表单的提交。同样的有时候开发者需要在表单提交的时候过滤一些的数据、做一些必要的操作(例如:验证表单输入的正确性,如果错误就阻止提交,从新输入)此时可以通过submit事件,监听下提交表单的这个动作

    使用上非常简单,与基本事件参数处理保持一致

    方法一:$ele.submit()

    绑定$ele元素,不带任何参数一般是用来指定触发一个事件,用的比较少

    <div id="test">点击触发<div>
    $("ele").submit(function(){
        alert('触发指定事件')
    })
    $("#text").click(function(){
         $("ele").submit()  //指定触发事件 
    });

    方法二:$ele.submit( handler(eventObject) )

    绑定$ele元素,每次$ele元素触发点击操作会执行回调 handler函数

    这样可以针对事件的反馈做很多操作了

    <form id="target" action="destination.html">
      <input type="submit" value="Go" />
    </form>
    $("#target").submit(function() { //绑定提交表单触发
        //this指向 from元素 
    });

    方法三:$ele.submit( [eventData ], handler(eventObject) )

    使用与方法二一致,不过可以接受一个数据参数,这样的处理是为了解决不同作用域下数据传递的问题

    <form id="target" action="destination.html">
      <input type="submit" value="Go" />
    </form>
    $("#target").submit(11111,function(data) { //绑定提交表单触发
        //data => 1111 //传递的data数据
    });

    通过在<form>元素上绑定submit事件,开发者可以监听到用户的提交表单的的行为

    具体能触发submit事件的行为:

    • <input type="submit">
    • <input type="image">
    • <button type="submit">
    • 当某些表单元素获取焦点时,敲击Enter(回车键)

    上述这些操作下,都可以截获submit事件。

    这里需要特别注意:

    form元素是有默认提交表单的行为,如果通过submit处理的话,需要禁止浏览器的这个默认行为
    传统的方式是调用事件对象  e.preventDefault() 来处理, jQuery中可以直接在函数中最后结尾return false即可

    jQuery处理如下:

    $("#target").submit(function(data) { 
       return false; //阻止默认行为,提交表单
    });

      <h2>submit</h2>
        <div class="left">
            <div class="aaron">
                <form id="target1" action="test.html">
                    回车键或者点击提交表单:
                    <input type="text" value="输入新的值" />
                    <input type="submit" value="Go" />
                </form>
            </div>
            <div class="aaron">
                <form id="target2" action="destination.html">
                    回车键或者点击提交表单,禁止浏览器默认跳转:
                    <input type="text" value="输入新的值" />
                    <input type="submit" value="Go" />
                </form>
            </div>
        </div>
        <script type="text/javascript">
        //回车键或者点击提交表单
        $('#target1').submit(function(e) {
            alert('捕获提交表达动作,不阻止页面跳转')
        });
        //回车键或者点击提交表单,禁止浏览器默认跳转:
        $('#target2').submit(function() {
            alert('捕获提交表达动作,阻止页面跳转')
            return false;
        });
        </script>
  • 相关阅读:
    C++中使用多线程
    hdu 4223 dp 求连续子序列的和的绝对值最小值
    hdu 1372 bfs 计算起点到终点的距离
    hdu 4217 线段树 依次取第几个最小值,求其sum
    心得
    hdu 1175 bfs 按要求进行搜索,是否能到达,抵消两个(相同)棋子
    hdu 4221 greed 注意范围 工作延期,使整个工作时间罚时最少的单个罚时最长的值
    hdu 2844 多重背包 多种硬币,每一种硬币有一点数量,看他能组成多少种钱
    uva LCDDisplay
    hdu 4218 模拟 根据一个圆点和半径画一个圆 注意半径要求
  • 原文地址:https://www.cnblogs.com/oybb/p/7780121.html
Copyright © 2011-2022 走看看