常用js表单验证控制代码大全

常用js表单验证控制代码大全

你提供的代码和函数展示了如何在JavaScript中进行各种表单验证。以下是一些关键点和示例,帮助你更好地理解和使用这些函数:

常用的表单验证函数

  1. 检查输入是否为空

    function isEmpty(input) {
        return input.value.trim() === '';
    }
    
  2. 检查输入是否为数字

    function isNumber(input) {
        return !isNaN(input.value);
    }
    
  3. 检查输入长度

    function checkLength(input, min, max) {
        const value = input.value.trim();
        if (value.length < min || value.length > max) {
            return false;
        }
        return true;
    }
    
  4. 检查电子邮件格式

    function isValidEmail(email) {
        const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
        return emailRegex.test(email.value);
    }
    
  5. 检查密码长度和复杂度

    function isStrongPassword(password) {
        const passwordRegex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/;
        return passwordRegex.test(password.value);
    }
    
  6. 检查输入是否为中文

    function isChinese(input) {
        const chineseRegex = /^[\u4e00-\u9fa5]+$/;
        return chineseRegex.test(input.value);
    }
    

综合的表单验证函数

以下是一个综合的表单验证函数示例,适用于多个输入字段:

function validateForm(form) {
    for (let i = 0; i < form.length; i++) {
        const input = form[i];
        if (input.type === 'text' && input.title && isEmpty(input)) {
            alert(`${input.title}不能为空!`);
            input.focus();
            return false;
        }
        if (input.id === 'sz' && !isNumber(input)) {
            alert(`${input.title}格式不对`);
            input.focus();
            return false;
        }
    }
    return true;
}

使用示例

在你的HTML表单中,可以这样使用:

<form onsubmit="return validateForm(this)">
    <label for="name">姓名:</label>
    <input type="text" id="name" title="姓名">
    <br><br>
    <label for="email">电子邮件:</label>
    <input type="text" id="email" title="电子邮件">
    <br><br>
    <label for="password">密码:</label>
    <input type="password" id="password" title="密码">
    <br><br>
    <input type="submit" value="提交">
</form>

注意事项

  1. 输入标题(title):在HTML中为每个需要验证的输入字段添加title属性,用于显示错误提示信息。
  2. 表单事件处理:使用onsubmit事件来调用验证函数,确保在提交表单时进行验证。
  3. 动态DOM操作:如果表单包含动态生成的元素,可能需要额外的逻辑来处理这些元素。

通过这些示例和说明,你应该能够更好地理解和实现各种表单验证功能。

Read more

使用本地大模型调用代码,根本就是一场骗局!

使用本地大模型调用代码,根本就是一场骗局!

通过大模型调用其他工具到底可不可行?ChatGPT 或许能轻松搞定一切,但同样的需求落在本地大模型上,恐怕就要打个问号了。 法国开发工程师 Emilien Lancelot 尝试了多款号称具备工具调用功能的 agent 框架,来看看本地大模型到底能不能完成任务,但结果就像他总结的“一无所获”。是什么让这位工程师失望了? 用 AutoGPT,得会点“糊弄学” AutoGPT 是款貌似强大的框架,提供很酷的 CLI 外加 Flutter UI,能够通过浏览器创建 agent。其主要功能是处理用户的文档、音频、视频等本地内容。 但是……它主要依靠 ChatGPT 或其他专有大模型服务来完成繁重工作,至少给我们的感觉是如此。 我们必须“唬弄”AutoGPT 才能使用 Ollama 端点,让其误认为是 ChatGPT。 ## OPENAI_API_KEY - OpenAI API

By Ne0inhk
详细说明Encoder-only架构的特点以及他和encoder decoder的区别和联系

详细说明Encoder-only架构的特点以及他和encoder decoder的区别和联系

Poe Encoder-only 架构的特点 Encoder-only 模型只使用 Transformer 的编码器部分,专注于对输入序列的理解和表征学习。这类模型通常被用在需要对输入文本进行深度理解的任务上,如文本分类、问答和语义匹配。以下是 Encoder-only 架构的核心特点: 1. 双向上下文建模 * 特点:Encoder-only 模型通过自注意力机制(Self-Attention)同时关注输入序列的前后文。 * 优势:相比单向模型(如 Decoder-only),它可以更全面地捕捉输入序列的全局语义,适合需要理解复杂上下文的任务。 * 实现方式:在训练过程中,不对输入序列进行因果掩码(Causal Masking),允许模型在任何位置访问序列的所有位置。 * 例子:BERT 的 Masked Language Model(MLM)训练任务通过随机遮盖部分单词,依赖左侧和右侧的信息来预测被遮盖的词,即双向建模的典型体现。 2. 适用于理解任务 * 特点:Encoder-only 模型专注于理解输入序列,而不生成输出序列,因此适合处理分类、

By Ne0inhk
手把手教学,DeepSeek-R1微调全流程拆解

手把手教学,DeepSeek-R1微调全流程拆解

手把手教学,DeepSeek-R1微调全流程拆解 原创 极客见识  2025年02月09日 09:02 广东 DeepSeek 通过发布其开源推理模型 DeepSeek-R1 颠覆了 AI 格局,该模型使用创新的强化学习技术,以极低的成本提供与 OpenAI 的 o1 相当的性能。 更令人印象深刻的是,DeepSeek 已将其推理能力提炼成几个较小的模型。这篇文章,我们将使用其蒸馏版本之一引导大家完成 DeepSeek-R1 的整个微调过程。 本文章将演示了如何微调其中一个模型(使用我们自己的自定义思维链数据集),然后保存和部署微调后的模型。 高级推理模型微调 DeepSeek 简介 DeepSeek-R1 是由深度求索(DeepSeek)公司开发的突破性推理模型。DeepSeek-R1 基于 DeepSeek-V3-Base(总共 671B 个参数,每次推理 37B 处于活动状态)构建,使用强化学习 (RL) 在提供最终答案之前生成思路链

By Ne0inhk
LLM o1 中的蒙特卡洛树搜索算法,DeepSeek论文中提到

LLM o1 中的蒙特卡洛树搜索算法,DeepSeek论文中提到

LLM o1 中的蒙特卡洛树搜索算法,DeepSeek论文中提到 凌青羽  2025年02月09日 09:30 上海 蒙特卡洛树搜索算法的核心是:选择与模拟。 蒙特卡洛树搜索算法的主要目标是:给定一个游戏状态来选择最佳的下一步。 前言 在讲解蒙特卡罗树算法之前,我们先玩一个“赌博”游戏。多臂老虎机(Multi-Armed Bandits)。 多臂老虎机(Multi-Armed Bandits) 游戏规则如下:赌博机有K个摇臂,每次摇动其中的任意一个摇臂,赌博机都会随机吐出一些硬币。现在允许你摇T次,请问如何尝试使得收益最大化。(有限次数的尝试的收益最大化) 思考一下,你会如何尝试?(是下面的玩法中的哪一种类型呢?) * • 纯随机(Random):每次随机选一个摇臂进行摇动。 * • 劣势:能算个期望收益,但收益不是最大的。 * • 仅探索(Exploration-only):每个摇臂摇动T/K次。 * • 相当于每个摇臂摇动的次数都一样。(劣势:浪费次数在收益较差的摇臂上) * • 仅利用(Exploitation-only):

By Ne0inhk