INPUT输入限制
根据提供的文件信息,我们可以归纳出以下关于“INPUT输入限制”的知识点: ### 1. 数字输入限制 在第一个示例中,使用了两种方法来确保用户只能输入数字。 - **第一种方法**:通过 `onkeyup` 和 `onafterpaste` 事件监听器,将任何非数字字符替换为空字符串。 ```html <input onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')"> ``` 这里的正则表达式 `/\D/g` 匹配所有非数字字符,并使用 `replace` 方法将其替换为空字符串。 - **第二种方法**:当检测到非法输入时,使用 `execCommand('undo')` 撤销用户的最后一步操作。 ```html <input onkeyup="if(isNaN(value))execCommand('undo')" onafterpaste="if(isNaN(value))execCommand('undo')"> ``` 此外,还有一种方法是在 `onchange` 事件中检查值是否包含非数字字符,如果是,则弹出警告并清除输入框中的内容。 ```html <input name=txt1 onchange="if(/\D/.test(this.value)){alert('只允许数字');this.value='';}"> ``` ### 2. 小数点输入限制 第二个示例是限制用户只能输入最多两位小数。 ```html <input type=text t_value="" o_value="" onkeypress="if(!this.value.match(/^[\+\-]?\d*?\.?\d*?$/))this.value=this.t_value;elsethis.t_value=this.value; if(this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?)?$/))this.o_value=this.value" onkeyup="if(!this.value.match(/^[\+\-]?\d*?\.?\d*?$/))this.value=this.t_value;elsethis.t_value=this.value; if(this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?)?$/))this.o_value=this.value" onblur="if(!this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?|\.\d*?)?$/))this.value=this.o_value; else{if(this.value.match(/^\.\d+$/))this.value=0+this.value; if(this.value.match(/^\.$/))this.value=0;this.o_value=this.value}"> ``` 这里使用了多个事件监听器: - `onkeypress` 用于限制非法字符的输入; - `onkeyup` 用于更新内部状态; - `onblur` 用于处理用户离开输入框的情况,例如修正小数点位置等。 ### 3. 非数字字符限制 此部分展示了如何限制用户输入特定类型的非数字字符。 - **第一种方法**:通过 `onkeyup` 事件监听器,将数字字符替换为空字符串。 ```html <input onkeyup="value=value.replace(/[\d]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[\d]/g,''))" maxlength=10 name="Numbers"> ``` 此外,还可以通过 `onbeforepaste` 事件监听器来阻止粘贴数字字符。 - **第二种方法**:允许字母、数字和特定字符(如点号)。 ```html <input onkeyup="value=value.replace(/[^\w\.\/]/ig,'')"> ``` ### 4. 字母输入限制 该示例展示了如何限制输入为特定字母或数字组合。 ```html <input onKeyUp="value=value.replace(/[^\d|chun]/g,'')"> ``` 这里通过正则表达式 `[^\d|chun]` 来匹配所有非数字和非 "chun" 的字符,并将它们替换为空字符串。 ### 5. 输入验证 - **限制小数位数**:确保用户只能输入最多两位小数。 ```html <input onKeyPress="if((event.keyCode<48||event.keyCode>57)&&event.keyCode!=46||/\.\d\d$/.test(value))event.returnValue=false"> ``` - **格式化小数**:确保用户输入的小数符合一定的格式。 ```html <input onkeyup="this.value=this.value.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"> ``` ### 6. 验证函数 最后给出了一段 JavaScript 代码,用于验证数组中是否存在重复的元素。 ```javascript function checkSth(arr) { var repeat = {}; // 用于记录重复的元素及其出现次数 var len = arr.length; if (len > 1) { // 当数组长度大于1时才进行检查 var temp = arr.slice(0); // 复制数组 for (var i = 0; i < len; i++) { temp[i] = arr[i].toString().split('').sort().join(''); // 对每个元素进行排序 } temp.sort(); // 对排序后的数组再次排序 var j = 0; var id; while (j < temp.length - 1) { id = temp[j]; if (id === temp[j + 1]) { // 检查当前元素与下一个元素是否相同 repeat[id] = repeat[id] ? repeat[id] + 1 : 1; // 记录重复次数 temp.splice(j, 1); // 移除重复的元素 } else { j += 1; // 继续检查下一个元素 } } } return repeat; } ``` 这段代码主要实现了对数组中元素的排序和去重功能,能够有效地找出数组中重复的元素及其出现次数。 ### 总结 以上内容总结了不同类型的输入限制技术,包括数字输入、小数点限制、非数字字符限制以及特定字符组合限制等。这些技术可以帮助开发者创建更安全、更易于使用的表单界面。通过合理应用这些技术,可以显著提高用户体验并减少潜在的安全隐患。