input实时监听控制输入框的输入内容和长度,并进行提示和反馈

一、前言

在MVVM模式下,有个双向数据绑定data-binding)的优势,可以通过viewmodel实时的监听用户操作,也可以将model的改动实时的反馈到界面上。

那么,在传统的js操控DOM的情况下如何实现呢?

下面我们以输入框(input)为例,对用户的操作进行监听,并实时的反馈给用户

 

二、正文

1)控制输入框的输入

//控制输入框的输入==只能输入四位,且必须是数字和字母
$(node).attr("onkeyup", "if(this.value.length>4){this.value=this.value.substr(0,4)};value=value.replace(/[^0-9A-Za-z]/g, '')");

$(node).attr("onpaste", "if(this.value.length>4){this.value=this.value.substr(0,4)};value=value.replace(/[^0-9A-Za-z]/g, '')");

$(node).attr("oncontextmenu", "if(this.value.length>4){this.value=this.value.substr(0,4)};value=value.replace(/[^0-9A-Za-z]/g, '')");
  • οnpaste="return false;" 禁止向控件粘贴内容
  • οncοpy="return false;" 禁止复制
  • oncut="return false;" 禁止剪贴
  • οncοntextmenu="return false;" 禁止使用右键
上面代码的:onkeyup表示侦听键盘输入事件;
      onpaste表示侦听浏览器粘贴事件;
      oncontextmenu表示侦听鼠标右键事件;

 2)通过监听输入对页面进行反馈

  上面的代码虽然可以通过监听事件来控制输入框的输入,但他是通过添加属性的方式,无法通过监听情况进行数据反馈

//通过侦听输入框,实时显示输入字符
if(/msie/i.test(navigator.userAgent)){
 document.querySelector("input").addEventListener("propertychange", function(){
        var input_value = document.querySelector("input").value;
        document.querySelector(".value").innerHTML = input_value /10;
    })       
}else{          
 document.querySelector("input").addEventListener("input", function(){
        var input_value = document.querySelector("input").value;
        document.querySelector(".value").innerHTML = input_value /10;
    })   
}
/msie/i.test(navigator.userAgent)可以进行浏览器内核判断,区分IE和非IE
IE使用propertychange,非IE使用input事件,

通过监听输入框的每一次输入,来实时的反馈显示给用户。

3)输入框的输入长度限制

不要通过监听事件来进行长度限制,直接使用input自带的maxlength进行

<input name="" type="text" maxlength="4" placeholder="">

 

三、结语

  MVVM模式能够很好的实现数据绑定,以上的方法只是传统JS下无奈的选择,建议还是早早的拥抱框架吧

转载于:https://www.cnblogs.com/nangezi/p/9325922.html

在编程世界里,尤其是网页应用、桌面应用以及各种软件界面设计中,`input` 输入框是一种常见的元素,用于用户向程序提供数据。当涉及到输入字符的数量限制时,开发者需要通过特定的技术手段对输入框输入内容进行控制。下面将详细介绍如何在 HTML 和 JavaScript 中设置 `input` 元素的输入长度限制。 ### HTML 配置 在 HTML 中配置输入框的字符限制相对直接。通过使用 `maxlength` 属性,可以指定输入框允许的最大字符数: ```html <input type="text" name="exampleInput" maxlength="10"> ``` 在这个例子中,`maxlength="10"` 表明用户只能在此输入框输入最多 10 个字符。超出这个数字时,浏览器通常会显示一个警告或者不允许继续输入新的文本。 ### JavaScript 动态限制 除了在 HTML 层面设置限制外,在一些场景下,我们可能希望在用户开始输入时动态地调整最大输入长度。这通常发生在后端验证之前,用于增强用户体验或是优化性能。 在这种情况下,我们可以利用 JavaScript监听输入事件,并实时更新输入框的 `maxlength` 属性,以此实现动态的长度限制。以下是一个简单的示例: ```javascript document.getElementById('myInput').maxLength = 5; ``` 假设有一个 `<input id="myInput">` 的输入框,我们可以使用上面的 JS 代码改变其最大长度为 5。每当用户开始输入时,如果已输入的字符超过此限制,则自动阻止额外字符的输入。 ### 实现动态限制的复杂情况 对于更复杂的场景,例如,用户正在输入密码并且需要满足特定的安全规则(如包含大小写字母、数字、特殊字符等),则可能需要结合正则表达式来检查并实时反馈给用户。这不仅涉及前端的实时校验,还可能涉及后端的进一步处理。 ### 相关问题: 1. 使用 JavaScript 设置和动态更改 `input` 标签的 `maxlength` 属性有哪些其他方法? 2. 如何利用前端技术有效提示用户当前输入是否超出了限定长度? 3. 设计输入验证策略时,需要考虑哪些因素来平衡用户友好性和安全性?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值