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

这篇具有很好参考价值的文章主要介绍了PHP:数据库中设置文本长度,通过js去限制前台文本长度。扩展:数据类型的限制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 效果图

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

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

 如上图:当测试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 事件监听器
            //设置长度的全局变量targetLength
            var 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 事件监听器
            //设置长度的全局变量targetLength
            var targetLength = '';
            //设置数据类型的全局变量targetType
            var 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()'); // 给输入框增加自定义的触发事件
    }
} 

 文章来源地址https://www.toymoban.com/news/detail-533583.html

到了这里,关于PHP:数据库中设置文本长度,通过js去限制前台文本长度。扩展:数据类型的限制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • oracle查询数据库内全部的表名、列明、注释、数据类型、长度、精度等

    Oracle查询数据库内全部的表名、列明、注释、数据类型、长度、精度 效果图: 字段排序,根据表名对字段进行排序

    2024年02月06日
    浏览(43)
  • 达梦数据库 SQL 错误 [22000]:列[xxx]长度超出定义——笔记

    今天碰到一个看表结构字段长度是够的;但是执行sql的时候报字段长度不够的问题;记录一下 大概场景就是新增一条数据,在插入数据库的时候,一个varchar字段在报 SQL 错误 [22000]:列[xxx]长度超出定义 把这个字段拿出来单独查 LENGTH() 函数,长度是在字段长度范围内的; 后来

    2024年02月08日
    浏览(62)
  • PHP数据库

    MySQL 简介 MySQL Create 免费的 MySQL 数据库通常是通过 PHP 来使用的。 在您能够访问并处理数据库中的数据之前,您必须创建到达数据库的连接。 在 PHP 中,这个任务通过 mysql_connect() 函数完成。 语法 注释:虽然还存在其他的参数,但上面列出了最重要的参数。请访问 W3School 提

    2024年02月15日
    浏览(35)
  • PHP后端连接数据库插入数据

    一、打开phpstudy。怎么搭建phpstudy,我上一个文章里有教。   二、编写代码 在网站根目录下(默认是www文件下)创建一个任意名称的文件夹,文件夹里创建两个php后缀的文件,一个html后缀的文件,名称自定义。但为了方便理解我把文件名命名成这样:          后端连接数据库

    2024年02月06日
    浏览(52)
  • PHP连接并操作数据库

    (如果有环境请直接跳过,阅读下面的操作) 在Linux中进行PHP和数据库的环境搭建(适用于CentOS-7.0版本或以上),以下操作全部是在 root 用户中操作,普通用户中记得命令前加入 sudo 进行提权后进行操作。 1、安装数据库 2、配置数据库 可以用这个手动设置密码,防止空密码登

    2024年02月05日
    浏览(47)
  • c# 从零到精通 数据库 定义LINQ查询表达式,从数组中查找长度小于7的所有项

    c# 从零到精通 数据库 定义LINQ查询表达式,从数组中查找长度小于7的所有项 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace LINQQuery { class Program { static void Main(string[] args) { //定义一个字符串数组 string[] strName = new string[] { “明日科技”,“C#编程词典”

    2024年02月10日
    浏览(42)
  • PHP:查询数据库,并将数据传给前端(在script中直接嵌套php语句)

     例子:在php中定义数据, 并将数据通过js在控制台输出 结果 扩展 例子:需要通过php查询数据库数据,并展现给js输出 控制台打印效果  

    2024年02月12日
    浏览(49)
  • PHP之 连接MySql数据库

    上一节已经成功配置了php+mysql开发环境( https://mp.csdn.net/mp_blog/creation/editor/129432310), 下面将进行实战连接数据库 一,打开sublime3编辑器,配置php开发环境 1.1 在网站根目录下新建php项目文件夹,存放php文件 1.2 安装Package Control,按下ctrl+shift+p,调出输入框输入Package Control,

    2024年02月02日
    浏览(50)
  • PHP的Laravel的数据库迁移

    在终端输入以下代码 php artisan migrate 我的报错啦!!!!! 数据库里面只有两张表,实际上应该有四张的!!! 反正表已经迁移完成了,就把迁移完成的表的内容注释掉,接着执行php artisan migrate,得到下一个表的内容。 然后依次类推直至所有表都创建完成!!! 当然啦!

    2024年02月04日
    浏览(48)
  • 如何使用 PHP 进行数据库连接池优化?

    连接池是一个存放数据库连接的地方,就像一个水池,你在这里可以得到数据库连接。这比每次都新建和关闭连接要快得多,因为连接池中的连接是可以重复使用的。 下面是一个简单的例子,展示如何使用PHP和PDO(PHP Data Objects)来创建一个连接池。 这个类有一个连接池,其

    2024年02月15日
    浏览(71)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包