jQuery 事件(二) 表单事件

blur与focus事件

focusin、focusout事件 与blur、focus事件均用于表单处理事件,它们之间的本质区别:是否支持冒泡处理javascript

实例:html

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

其中input元素能够触发focus()事件java

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

focus()在元素自己产生,focusin()在元素包含的元素中产生

blur与focusout也亦是如此浏览器

change事件

<input>元素,<textarea>和<select>元素的值都是能够发生改变的,开发者能够经过change事件去监听这些改变的动做函数

input元素

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

select元素

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

textarea元素

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

<!DOCTYPE html>
<html>

<head>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <title></title>
    <style>
    .left div,
    .right div {
        width: 100%;
        padding: 5px;
        margin: 5px;
        float: left;
        border: 1px solid #ccc;
    }
    
    .left div {
        background: #bbffaa;
    }
    
    .right div {
        background: yellow;
    }
    </style>
    <script src="http://libs.baidu.com/jquery/1.9.1/jquery.js"></script>
</head>

<body>
    <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>
</body>

</html>

select事件

当 textarea 或文本类型的 input 元素中的文本被选择时,会发生 select 事件orm

这个函数会调用执行绑定到select事件的全部函数,包括浏览器的默认行为。能够经过在某个绑定的函数中返回false来防止触发浏览器的默认行为

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

方法一:.select()

触发元素的select事件:

$("input").select();

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

绑定$ele元素,每次$ele元素触发点击操做会执行回调 handler函数,这样能够针对事件的反馈作不少操做

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

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

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

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

submit事件

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

方法一:$ele.submit()

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

<div id="text">点击触发<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; //阻止默认行为,提交表单
});
相关文章
相关标签/搜索