web前端——页面动态交互(对注册页信息添加css及js)

这篇具有很好参考价值的文章主要介绍了web前端——页面动态交互(对注册页信息添加css及js)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

按照下述要求为register.html补充外部CSS样式和JavaScript脚本。

1.补充register.css样式,实现如下功能(效果见图2):

  1. 设置“注册信息”红、黄二重文本阴影,使用rgba设置阴影具有一定透明度;
  2. 姓名和密码输入框中显示背景图像;
  3. 单选按钮和复选按钮被选中时,其后的辅助文本动态变化为红色字体。

2.补充register.js脚本,实现如下功能:

  1. 当用户填写非空白用户名、学号和密码后,将输入域后的星号变为灰色,如果用户清除输入域内容,则再将星号变为红色,见图2;(可通过元素事件属性绑定)
  2. 当用户单击“注册”按钮时,读取用户的姓名、学号、性别、住址和爱好信息,然后使用确认消息对话框显示这些信息,并提示用户是否继续提交,见图3;(不能通过元素事件属性绑定事件处理函数)

3.如果继续,则对表单数据做如下检验、处理和提示,见图4

  1. 检验用户名不能为空,清除用户名两端多余空格,最后向服务器提交去掉空格后的用户名;
  2. 密码必须为8位,且两次输入密码相同;
  3. 电话号码必须为11位数字;
  4. 邮件地址中必须包含且只包含一个“@”符号,并且“@”不能是地址第一和最后一个字符。

注意:若非特别说明,不能修改register.html中元素的标签及其属性。

<!doctype html>
<html>

<head>
    <meta charset="utf-8">
    <title>新生报到</title>
    <link href="style/register.css" rel="stylesheet" type="text/css">
    <script src="js/register.js"></script>
</head>

<body>
    <div id="wrapper">
        <h3 id="title" align="center">注 册 信 息</h3>
        <hr noshade size="1" width="99%">
        <form action="" name="regForm" id="regForm" autocomplete="on" method="get">
            <div class="info-item"><span class="item-name">姓名:</span>
                <input onchange="changeStatus()" type="text" class="item-inp" name="user_name" id="user_name" maxlength="10" autofocus/><span class="star"> *</span>
            </div>

            <div class="info-item"><span class="item-name">学号:</span>
                <input onchange="changeStatus()" type="text" class="item-inp" name="user_id" /><span class="star"> *</span>
            </div>

            <div class="info-item"><span class="item-name">密码:</span>
                <input onchange="changeStatus()" type="password" class="item-inp user_pwd" name="user_pwd1" placeholder="请输入8位密码" /><span class="star"> *</span>
            </div>

            <div class="info-item"><span class="item-name">确认密码:</span>
                <input onchange="changeStatus()" type="password" class="item-inp user_pwd" name="user_pwd2" placeholder="请输入相同的密码" /><span class="star"> *</span>
            </div>

            <div class="info-item"><span class="item-name">性别:</span>
                <div class="item-inp"><label><input type="radio" id="user_sex-man" name="user_sex" value="男" checked/><span>男</span></label>
                    <input type="radio" id="user_sex" name="user_sex" value="女" /><label for="user_sex">女</label>
                </div>
            </div>

            <div class="info-item"><span class="item-name">身高:</span>
                <input type="number" class="item-inp" name="user_height" min="150" max="190" value="178" step="5" /> 厘米
            </div>

            <div class="info-item"><span class="item-name">体重:</span>
                <input type="range" class="item-inp" name="user_weight" min="45" max="90" value="60" step="2" /> 千克
            </div>

            <div class="info-item"><span class="item-name">电话号码:</span>
                <input type="tel" class="item-inp" name="user_tel" placeholder="请输入11手机号码" />
            </div>

            <div class="info-item"><span class="item-name">E-mail:</span>
                <input type="text" class="item-inp" name="user_email" />
            </div>

            <div class="info-item"><span class="item-name">家庭住址:</span>
                <select class="item-inp" name="user_address">
					<option value="0" >北京</option>
					<option value="1"  selected>上海</option>
					<option value="2" >成都</option>
				</select>
            </div>

            <div class="info-item"><span class="item-name">运动爱好:</span>
                <input type="checkbox" name="user_habit" value="篮球" checked/><span>篮球</span>
                <input type="checkbox" name="user_habit" value="足球" checked><span>足球</span>
                <input type="checkbox" name="user_habit" value="游泳"><span>游泳</span>
            </div>

            <div class="info-item"><span class="item-name">个人自述:</span>
                <textarea name="info" rows="5" cols="50">我是一位特别热爱学习的新世纪大学生。。。</textarea>
            </div>

            <input type="hidden" name="user_secret" value="7" />

            <div class="info-item" style="text-align:center;">
                <input type="button" class="item-bt" value="注册" style="margin-right:100px;" /> <input type="reset" class="item-bt" value="重置" />
            </div>
            <hr noshade size="1" width="99%">

            <ul class="info-item">
                <li><a href="tel:10086">电话</a></li>
                <li><a href="sms:10086">短信</a></li>
                <li><a href="mailto:10086@sina.com">E-mail</a></li>
                <li><a href="#title">返回顶部</a></li>
            </ul>
        </form>
    </div>
</body>

</html>

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

@charset "utf-8";

/* CSS Document */

* {
    font-size: 13px;
}

a {
    text-decoration: none;
}

a:link {
    color: blue;
}

a:visited {
    color: gray;
}

a:hover {
    color: red;
}

a:active {
    color: yellow;
}

#wrapper {
    width: 95%;
    min-width: 400px;
    max-width: 700px;
    margin: 10px auto;
    padding-top: 5px;
    border: 1px solid #ccc;
    background-color: #eee;
    letter-spacing: 0.2em;
}

#title {
    text-align: center;
    font-size: 1.5em;
    font-weight: bolder;
    margin: 10px;
    /*1.注册信息样式设计*/
    text-shadow: 0 4px rgba(253, 233, 4, 0.4), -4px 0px rgba(255, 0, 0, 0.4)
}

.info-item {
    margin: 10px;
    padding: 3px;
    /*border: 1px solid green;*/
    border-radius: 10px/6px;
    background-color: rgba(204, 204, 204, 0.4);
}

.item-name {
    width: 32%;
    display: inline-block;
    text-align: right;
    vertical-align: middle;
    /*文本和输入域均设置垂直居中对齐*/
}

.item-inp {
    width: 40%;
    box-sizing: border-box;
    /*否则设置了背景图像的输入域因padding-left而变宽*/
    display: inline-block;
    vertical-align: middle;
    margin-right: 0.5em;
}

.user_pwd {
    background-image: url(../images/password.gif);
    background-repeat: no-repeat;
    padding-left: 20px;
}

input,
select {
    border: 1px solid #ccc;
    /*统一边框,否则用户名和密码输入框会因为设置背景图像而出现黑色立体边框*/
    outline: 1px solid #CCC;
    /*统一轮廓,消除chrome浏览器中输入域获得焦点时出现黑色立体边框*/
}

/*2.带有背景图像的输入域样式设计*/

/*3.设置被选中的单选按钮和复选框后的文字的颜色*/

textarea {
    width: 60%;
    vertical-align: middle;
}

/*设置导航链接的样式*/

ul,
li {
    box-sizing: border-box;
    border-radius: 10px/6px;
    background-color: rgba(204, 204, 204, 0.4);
}

ul {
    list-style: none;
    text-align: center;
}

li {
    width: 22%;
    display: inline-block;
}

.star {
    color: #F00;
}

#user_name {
    background-image: url(../images/name.gif);
    background-repeat: no-repeat;
    padding-left: 20px;
}

input:checked+span {
    color: red;
}

input:checked+label {
    color: red;
}

.grey {
    color: grey;
}
function changeStatus(obj) {
    //方法一:通过节点关系
    let content = document.getElementsByTagName('input');
    let requried = document.getElementsByClassName('star');
    let n = 0;
    for (n; n <= 4; n++) {
        if (content[n].value != '') {
            requried[n].classList.add('grey')
        } else {
            requried[n].classList.remove('grey')
        }
    }
}

function getFormData(form, keys = []) {
    let formData = new FormData(form)
    return [formData, keys.map(item => {
        return formData.get(item).trim()
    })]
}
window.addEventListener("load", () => {
    var button = document.getElementsByClassName('item-bt')
    button[0].onclick = function() {
        let m = document.getElementsByTagName('select')
            /*获得用户填写信息,在确认消息对话框中进行显示,并询问用户是否继续提交*/
        let re = document.forms[0]
        let [
            form, [
                name, sex, id, tel,
                email, pwd1, pwd2
            ],
        ] = getFormData(
            re, [
                "user_name", "user_sex", "user_id", "user_tel",
                "user_email", "user_pwd1", "user_pwd2"
            ]
        )
        let limit = /[^\d]/g
        let habits = form.getAll('user_habit').join(',')
        let index = m[0].selectedIndex
        let address = m[0].options[index].innerText
        let firm = 1;
        let email_i = 0;
        for (let i = 0; i < email.split('').length; i++) {
            if ("@" == email[i]) {
                email_i++;
            }
        }
        /*校验用户输入信息,合格则提交*/
        if (name === '') {
            alert('姓名不得为空');
            return;
        }
        if (pwd1.length != 8) {
            alert('密码必须为8位');
            return;
        }
        if (pwd1 !== pwd2) {
            alert('两次密码必须一致');
            return;
        }
        if (tel.length != 11) {
            alert('手机号码必须要11位');
            return;
        }
        if (limit.test(tel)) {
            alert('手机号码必须是数字');
            return;
        }
        if (email_i > 1 || email_i == 0) {
            alert('请输入正确的邮箱');
            return;
        }
        if (email.toString().indexOf("@") == 0 || email.toString().indexOf("@") == email.split('').length - 1) {
            alert('邮箱格式不正确');
            return;
        }
        if (firm) {
            confirm(
                `姓名:${name}` + '\n' +
                `学号:${id}` + '\n' +
                `性别:${sex}` + '\n' +
                `住址:${address}` + '\n' +
                `爱好:${habits}` + '\n' + '\n' +
                `请核对以下信息是否正确` + '\n' + '\n' +
                `单击确定继续,否则取消`
            )
        }
    }
})

测试结果截图:

添加外部register.js脚本文件,实现如下功能: (5)当用户填写非空白用户名、学号和,前端,html,javascript 

 添加外部register.js脚本文件,实现如下功能: (5)当用户填写非空白用户名、学号和,前端,html,javascript

 

 添加外部register.js脚本文件,实现如下功能: (5)当用户填写非空白用户名、学号和,前端,html,javascript

 

到了这里,关于web前端——页面动态交互(对注册页信息添加css及js)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • web开发中,简单的案例说明前端页面和后端以及mysql数据库的交互过程

            首先这是一个基于 web开发 的稿子,作者也是转java20天左右,以前也一直迷惑起那段页面是如何和后端进行交互,数据提交提交到了哪里?后端开发如何获取到前端提交的数据呢?后端数据提交到数据库中应该如何处理,接下来通过一个简单的例子,登录案例 (实

    2024年02月03日
    浏览(52)
  • 快速搭建前端页面并与后端交互

    前置: 需要先包含node环境 如果没有,可去node官网下载一个并配置 node官网地址:https://nodejs.org/zh-cn/ 1.1 vue脚手架 检测是否有node环境,如果没有则去node官网下载配置【进入cmd执行以下命令】 安装vue脚手架 创建项目 如果当前文件夹已经存在会提示Target directory exists. Continue

    2024年02月04日
    浏览(38)
  • 弹窗、抽屉、页面跳转区别 | web交互入门

    当用户点击或触发浏览页面的某个操作,有很多web交互方式,可以大致分为弹窗、抽屉、跳转新页面三种web交互方式。虽然这三种web交互方式看起来没什么不同,但实际上弹窗、抽屉、跳转新页面对交互体验有蛮大的影响。 这需要UIUX设计师针对不同的使用场景合理使用三种

    2024年02月10日
    浏览(36)
  • 在前端页面上应用智能合约实现合约交互例子

    在Remix上编译和部署智能合约,本地使用vscode工具调用智能合约应用于前端界面 win10 Remix VScode Ganache-cli web3 创建新合约 InfoContract.sol 并写入以下内容: 写好合约内容之后,按照ganache-cli连接Metamask钱包里面 步骤 的内容操作。 在remix中进入DeployRun模块,选择Enviroment为Injected W

    2023年04月08日
    浏览(37)
  • 配置web服务器+编写简单页面+分析交互过程

    目录 配置web服务器 IIS配置web服务器 C++搭建简单的web服务器 编写web页面 程序测试 IIS配置测试 C++程序测试 Wireshark捕获交互过程及分析 三次握手 请求报文 请求行 请求头 请求体 响应报文 响应行 响应头 响应体 四次挥手 实验中遇到的问题及分析 参考资料 使用Windows自带的II

    2024年02月08日
    浏览(46)
  • 探索 AJAX 技术:实现动态数据交互的前端利器

    简介: AJAX(Asynchronous JavaScript and XML)技术在 Web 前端开发中扮演着重要的角色,它通过异步通信和动态内容更新,为用户带来更好的交互体验。本篇笔记将详细探索 AJAX 技术,并通过生动的代码演示来展示其在实现动态数据交互方面的优势。 1. 异步通信 异步通信是一种在

    2024年02月14日
    浏览(42)
  • vue3 动态添加路由刷新后页面丢失(白屏)问题

    动态添加路由操作一般是用vuex或者Pinia封装,在登录页面调用 如果出现刷新页面丢失有两种可能: 1:vuex或者Pinia没有做持久化处理 2:动态添加路由需要在main.ts里面也调用一次 不需要路由守卫即可实现 注意:必须要在页面挂载前还有路由配置完成前调用添加,不然还是丢

    2024年02月16日
    浏览(55)
  • 【Bootstrap 学习笔记】Bootstrap 提供相应插件在HTML页面中实现动态交互效果

    Bootstrap 提供相应插件在 HTML 页面中实现动态交互效果。 1)前提条件 由于 Bootstrap 提供的插件都是依赖于 jQuery 的,所以必须要先引入 jQuery 文件。 Bootstrap 的每个插件都对应具有一个 JavaScript 文件,允许单独引入到 HTML 页面。也提供了一个完整版本(Bootstrap.js 或 Bootstrap.min

    2024年02月13日
    浏览(100)
  • 2.css公共样式、LOGO SEO优化、常用模块和注册页类名命名、tab栏布局原理、Web服务器

    favicon.ico 一般用于作为缩略的网站标志,它显示在浏览器的地址栏或者标签上。 目前主要的浏览器都支持favicon.ico图标。 favicon图标的制作分为3步: 1.制作favicon图标 2.favicon图标放到网站根目录下 3.HTML页面引入favicon图标 1.制作favicon图标 (1)把品优购图标切成png图片 (2)把png图片

    2024年02月16日
    浏览(49)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包