监听 input 和 textarea 输入框内容改变

本文介绍了一种使用事件委托的方法来监听网页中 input 和 textarea 输入框的内容改变,并展示了如何通过 jQuery 获取和设置这些元素的属性。
// 监听 input 和 textarea 输入框内容改变
$("body").delegate(".元素","propertychange input",function(){
    console.log($(this).val());
})
这里采用了事件委托的方法去实现内容, 把元素的 propertychange input 事件委托给body元素

获取元素的属性  :   $元素.prop("name");

设置元素的属性  :   $元素.prop("name","user");

在HTML中,`<textarea>`元素默认支持多行输入,当内容超出可视区域时会自动换行。要监听内容是否超出换行,可以通过以下方式实现: ### 方法1:监听`scrollHeight`变化 通过比较`scrollHeight`(内容总高度)`clientHeight`(可视区域高度),判断是否需要换行或出现滚动条。 ```html <textarea id="myTextarea" rows="3"></textarea> <script> const textarea = document.getElementById('myTextarea'); textarea.addEventListener('input', function() { if (this.scrollHeight > this.clientHeight) { console.log('内容超出可视区域,可能已换行'); } else { console.log('内容未超出可视区域'); } }); </script> ``` ### 方法2:监听换行符(`\n`) 如果需要精确检测用户是否主动换行(如按Enter键),可以监听输入内容中的换行符: ```html <textarea id="myTextarea"></textarea> <script> const textarea = document.getElementById('myTextarea'); textarea.addEventListener('input', function() { if (this.value.includes('\n')) { console.log('检测到换行符'); } }); </script> ``` ### 方法3:结合CSSResizeObserver 如果`<textarea>`的宽度固定且需要动态适应内容,可以使用`ResizeObserver`监听尺寸变化: ```html <textarea id="myTextarea" style="width: 200px;"></textarea> <script> const textarea = document.getElementById('myTextarea'); const observer = new ResizeObserver(entries => { for (let entry of entries) { if (entry.contentRect.height > parseInt(getComputedStyle(textarea).height)) { console.log('高度变化,可能换行'); } } }); observer.observe(textarea); </script> ``` ### 注意事项 1. **自动换行**:默认情况下,`<textarea>`的`wrap`属性为`soft`(不自动插入换行符)或`hard`(提交时包含换行符)。若需强制换行,可设置`wrap="hard"`。 2. **性能优化**:频繁监听`input`事件可能影响性能,建议结合防抖(debounce)处理。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值