PHP:数据库中设置文本长度,通过js去限制前台文本长度。扩展:数据类型的限制

news/2024/11/30 9:39:20/

 效果图

 如上图:当测试111的长度超过数据库中限制的长度,进行提示,并且自动将多余部分截掉

HTML代码

<!-- 附加属性 -->
<div class="text-nav-1 " id="append1">  <div >append1</div><input type="text"   autocomplete="off"  name="append1" value="<?= $_POST['append1'] ?>" /> 
</div>
<div class="text-nav-1 " id="append2">  <div >append2</div><input type="text"   autocomplete="off"  name="append2" value="<?= $_POST['append2'] ?>" /> 
</div>
<div class="text-nav-1 " id="append3">  <div >append3</div><input type="text"   autocomplete="off"  name="append3" value="<?= $_POST['append3'] ?>" /> 
</div>
<div class="text-nav-1 " id="append4"><div >append4</div><input type="text"   autocomplete="off"  name="append4" value="<?= $_POST['append4'] ?>" />
</div>
<div class="text-nav-1 " id="append5">  <div >append5</div><input type="text"   autocomplete="off"  name="append5" value="<?= $_POST['append5'] ?>" /> 
</div>

JS功能实现代码

<script type="text/javascript">window.onload=function(){<?php$sql1 = "SELECT * FROM attribute where is_show = 'Y'and table_name = 'customers'";$result1 = DB_query($sql1, $db);// 检查查询结果是否为空if (DB_num_rows($result1) > 0) {// 初始化一个空数组来存储查询结果$data = array();// 遍历查询结果并将每行数据存入数组中while ($row = DB_fetch_array($result1)) {$data[] = $row;}} else {echo "没有结果";}?> //给数据库输出的数组赋值var data = <?php echo json_encode($data); ?>;// console.log(data)//设置长度// 获取所有具有以 "append" 开头的 id 属性的 <div> 元素var divElements = document.querySelectorAll("div[id^='append']");// 遍历每个 <div> 元素divElements.forEach(function(divElement) {// 获取当前 <div> 元素下的 <input> 元素var inputElement = divElement.querySelector("input");       // 添加 onclick 事件监听器//设置长度的全局变量targetLengthvar targetLength = '';divElement.onclick = function(event) {//获取指定的id值var clickedDivId = event.currentTarget.id;// 根据点击的 div 的 ID 值查找对应的 length 值//对最开始查询的数据库数组进行处理var targetItem = data.find(function(item) {//让数据库中的colum_name的值和指定的id的值相等return item.column_name.toString() === clickedDivId;});// 判断是否找到匹配的项if (targetItem) {//如果找到了对应的值,就进行赋值targetLength = targetItem.length;// console.log('Found length:', targetLength);} else {console.log('ID not found');}// 在点击 <div> 时,将焦点设置到对应的 <input> 元素,执行失去焦点方法inputElement.focus();}// 添加 onblur 事件监听器inputElement.onblur = function() {//输出长度的值// console.log(targetLength)//判断当前长度和数据库中获取的长度的值if (this.value.length > targetLength) {alert('超出长度限制!'); // 显示提示信息this.value = this.value.slice(0, targetLength); // 截断超出长度的文本}};});}
</script>

扩展:数据类型的限制

默认对int,varchar,datetime进行限制

功能实现

<script type="text/javascript">window.onload=function(){<?php$sql1 = "SELECT * FROM attribute where is_show = 'Y'and table_name = 'customers'";$result1 = DB_query($sql1, $db);// 检查查询结果是否为空if (DB_num_rows($result1) > 0) {// 初始化一个空数组来存储查询结果$data = array();// 遍历查询结果并将每行数据存入数组中while ($row = DB_fetch_array($result1)) {$data[] = $row;}} else {echo "没有结果";}?> //给数据库输出的数组赋值var data = <?php echo json_encode($data); ?>;// console.log(data)//设置长度和数据类型// 获取所有具有以 "append" 开头的 id 属性的 <div> 元素var divElements = document.querySelectorAll("div[id^='append']");// 遍历每个 <div> 元素divElements.forEach(function(divElement) {// 获取当前 <div> 元素下的 <input> 元素var inputElement = divElement.querySelector("input");       // 添加 onclick 事件监听器//设置长度的全局变量targetLengthvar targetLength = '';//设置数据类型的全局变量targetTypevar targetType = '';divElement.onclick = function(event) {//获取指定的id值var clickedDivId = event.currentTarget.id;//根据点击的 div 的 ID 值查找对应的 length值 和 type值//对最开始查询的数据库数组进行处理var targetItem = data.find(function(item) {//让数据库中的colum_name的值和指定的id的值相等return item.column_name.toString() === clickedDivId;});// 判断是否找到匹配的项if (targetItem) {//如果找到了对应的值,就进行赋值//长度targetLength = targetItem.length;targetType = targetItem.type;// console.log('Found type:', targetType);//如果数据类型是时间if(targetType==='datetime'){inputElement.setAttribute('onfocus', 'WdatePicker()'); // 给输入框增加自定义的触发事件}} else {console.log('ID not found');}// 在点击 <div> 时,将焦点设置到对应的 <input> 元素,执行失去焦点方法inputElement.focus();}// 添加 onblur 事件监听器inputElement.onblur = function() {//输出长度的值// console.log(targetLength)//判断当前长度和数据库中获取的长度的值if (this.value.length > targetLength) {alert('超出长度限制!'); // 显示提示信息this.value = this.value.slice(0, targetLength); // 截断超出长度的文本}//数据类型的限制//当前文本框中的数据类型var inputValue = this.value;// console.log("当前:"+typeof inputValue+"数据库:"+targetType)// 根据数据库中的字段类型信息进行数据类型判断if (targetType === 'int' && !isNumeric(inputValue) && inputValue != '') {alert('请输入有效的数字!'); // 显示类型不匹配的提示信息this.value = ''; // 清空输入框的值inputElement.removeAttribute('onfocus'); // 移除输入框的触发事件}else if (targetType === 'varchar' && typeof inputValue !== 'string' && inputValue != '') {alert('请输入有效的字符串!'); // 显示类型不匹配的提示信息this.value = ''; // 清空输入框的值inputElement.removeAttribute('onfocus'); // 移除输入框的触发事件}else if (targetType === 'datetime') {// inputElement.setAttribute('onfocus', 'WdatePicker()'); // 给输入框增加日期选择器的触发事件//判断输入的值是否是时间格式if (targetType === 'datetime' && !isDateFormat(inputValue) && inputValue != ''){alert('请输入有效的时间!'); // 显示类型不匹配的提示信息this.value = ''; // 清空输入框的值}} else {inputElement.removeAttribute('onfocus'); // 移除输入框的触发事件}};});// 自定义函数,用于判断一个字符串是否为有效的数字function isNumeric(value) {return /^-?\d+(\.\d+)?$/.test(value);}//自定义函数,用于判断是否是时间function isDateFormat(value) {// 正则表达式匹配 XXXX-XX-XX 格式的日期var dateRegex = /^\d{4}-\d{2}-\d{2}$/;return dateRegex.test(value);}}
</script> 

注:这里会出现时间选择器不能立刻进行展示,需要二次点击才能出现,解决方法:

 将 WdatePicker() 方法放在一个单独的函数中,并在比对完数据库的值后调用该函数。

代码

实现时间插件的方法

function showDatePicker(inputId) {var inputElement = document.getElementById(inputId);WdatePicker();// 其他处理逻辑...
}

 在比对完之后,执行showDatePicker(clickedDivId);将对应div的值给该方法。

if (targetItem) {//如果找到了对应的值,就进行赋值//长度targetLength = targetItem.length;targetType = targetItem.type;// console.log('Found type:', targetType);//如果数据类型是时间if(targetType==='datetime'){showDatePicker(clickedDivId); // 调用 showDatePicker() 函数// inputElement.setAttribute('onclick', 'WdatePicker()'); // 给输入框增加自定义的触发事件}
} 

 


http://www.ppmy.cn/news/789889.html

相关文章

巴基斯坦黑客组织有多牛?连苹果手机也中招

据信由巴基斯坦黑客组织设计的一种基于Windows的远程访问木马&#xff0c;已经渗透了两年&#xff0c;并针对Android和macOS设备进行了重新设计&#xff0c;从而渗透到计算机并窃取用户的数据。 据网络安全公司Kaspersky称&#xff0c;这种被称为“ GravityRAT ”的恶意软件现…

乐易佳苹果手机恢复软件

相信许多小伙伴都有过操作失误&#xff0c;从而导致重要数据被删除&#xff0c;那么这时候不防来试试乐易佳苹果手机恢复软件吧&#xff01;这是一款功能强大&#xff0c;且倾心开发的苹果手机数据恢复软件&#xff0c;不但能够帮助用户快速的恢复恢复苹果手机上误删除的通讯录…

反病毒软件测试,PCSL手机反病毒软件测试 2011年7月

随着手机厂商如三星、摩托罗拉、HTC、索尼爱立信、诺基亚、苹果等对智能手机地持续推广&#xff0c;智能手机正在加速普及&#xff0c;下载自己喜欢的软件&#xff0c;安装、使用&#xff0c;这种类似于PC的操作体验得到了不少手机用户的青睐。 PCSL2011年7月测试报告 PCSL手机…

如何防范手机病毒?揭秘黑客5种常见网络钓鱼

黑客近日正在利用COVID-19危机进行一系列尝试&#xff0c;诱骗人们使用假电子邮件共享其安全证书。 据国内知名网络安全专家、东方联盟创始人郭盛华透露&#xff1a;“苹果是黑客模仿最广泛的品牌&#xff0c;网络钓鱼是一种在电子邮件或其他消息中模拟来自品牌的合法消息的尝…

苹果手机上好用的连接linux,都说苹果机好用,那么苹果手机为什么不卡呢?

原标题&#xff1a;都说苹果机好用&#xff0c;那么苹果手机为什么不卡呢&#xff1f; 虽然现在国产手机在明面上和苹果手机的差距越来越小&#xff0c;苹果机也已从曾经的神坛上掉落。但不可否认的是&#xff0c;在综合素质方面&#xff0c;以国产机为代表的安卓阵营&#xff…

C++哈希

在掌握学习map和set过程中&#xff0c;我们了解到其是底层结构为红黑树的关联容器&#xff0c;在查询时效率可以高达O(log 2n)&#xff0c;即最差情况下需要比较红黑树的高度次。当树中的节点越多&#xff08;存储的数据内容越多&#xff09;&#xff0c;查询所耗费的时间就越多…

leetcode:面试题 字符串压缩(详解)

目录 题目&#xff1a; 代码实现&#xff1a; 思路详解&#xff1a; 题目&#xff1a; 字符串压缩。利用字符重复出现的次数&#xff0c;编写一种方法&#xff0c;实现基本的字符串压缩功能。比如&#xff0c;字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变…

6g运行和8g运行有什么差别

从理论上来说的话&#xff0c;6G运行内存的手机要比8G运行内存的手机要差的。一方面是8G的手机缓存要更大一些&#xff0c;软件应用的打开速度要更快一些&#xff1b;一方面是8G手机在打开多个软件应用的时候&#xff0c;也不会出现卡顿&#xff0c;起码要比6G的手机表现得要更…