Jquery的change()方法的使用

jquery 的 change() 方法的使用

w3c 中的定义:链接  <a>http://www.w3school.com.cn/jquery/event_change.asp<a>

jQuery 事件 - change() 方法

 

定义和用法

当元素的值发生改变时,会发生 change 事件。

该事件仅适用于文本域(text field),以及 textarea 和 select 元素。

change() 函数触发 change 事件,或规定当发生 change 事件时运行的函数。

注释:当用于 select 元素时,change 事件会在选择某个选项时发生。当用于 text field 或 text area 时,该事件会在元素失去焦点时发生。

触发 change 事件

触发被选元素的 change 事件。

语法

$(selector).change()

将函数绑定到 change 事件

规定当被选元素的 change 事件发生时运行的函数。

语法

$(selector).change(function)


遇到的问题:
在页面中通过button 按钮 触发input 上传文件
html如下:
 <form name="upload" id="upload" action="/fnance/upload" class="form-inline" style="display: inline-block;" method="post" enctype="multipart/form-data">
      <input type="file" id="file" name="file" style="display: none;"/>
      <button type="button" class="btn btn-primary" onclick="$('#file').click();">批量导入</button>
 </form>

js如下:

复制代码
 $("#file").change(function(){
         alert( $("#file").val());
         $("#upload").ajaxSubmit(function(data){
             var json = eval("("+data+")");
             if(json.status == 1){
                 alert("导入成功");
                 datatables.draw();
             }else{
                 alert(json.message);
             }
         })
         $(this).val("");
     });
复制代码

当button 按钮触发点击事件后,  触发input 框的点击事件, 对于 type='file' 的input框 选择文件后,value='选中的文件名' 符合 条件触发change() 方法

jQuery 中,`change` 事件可能会被重复触发,这是因为它会在元素失去焦点的时候被触发,而在某些情况下,元素失去焦点的次数可能会很多。 为了解决这个问题,可以使用 `debounce` 或 `throttle` 函数来限制事件触发的次数。这两个函数都可以在一定时间内只执行一次函数,从而减少事件的触发次数。 下面是一个使用 `throttle` 函数来解决 `change` 事件重复触发的示例代码: ```javascript $(document).ready(function () { // 定义 throttle 函数,限制函数在一定时间内只执行一次 function throttle(fn, delay) { var timer = null; return function () { var context = this, args = arguments; clearTimeout(timer); timer = setTimeout(function () { fn.apply(context, args); }, delay); }; } // 绑定 change 事件,使用 throttle 函数限制事件触发的次数 $('input[type="checkbox"]').on( 'change', throttle(function () { console.log('Checkbox changed.'); }, 1000) ); }); ``` 在上面的代码中,我们定义了一个 `throttle` 函数,它接受一个函数和一个延迟时间作为参数。在函数内部,我们使用了一个定时器来延迟函数的执行,如果在延迟时间内,函数被多次调用,那么只有最后一次调用能够执行。 然后,我们使用 `throttle` 函数来绑定 `change` 事件,并且设置延迟时间为 1000ms。这样,当复选框被点击时,事件只会在 1000ms 后被触发一次,从而解决了重复触发的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值