PHP8.1.21版本已发布
vue8.1.21版本已发布
jquery8.1.21版本已发布

博客列表 > 表单事件与Ajax 表单验证-0716

表单事件与Ajax 表单验证-0716

XXXX.的博客
XXXX.的博客 原创
2019年07月20日 23:53:29 514浏览
  1. 动态获取用户信息:

    基本步骤:1.创建: 请求对象  2.监听: 成功回调   3.设置: 请求参数   4.发送: 异步请求

    innerHTML支持HTML标签      isNaN判断是否为数值   readystatechange   successCallback 成功回调

    encodeURIComponent():对值中的非法字符进行编码,如空格等,解码:decodeURIComponent()

实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Ajax-GET</title>
</head>
<body>
<label for="user_id">用户ID:</label>
<input type="text" id="user_id" name="user_id" autofocus>
<p id="tips"></p>
<script>
    var input = document.getElementById("user_id");
    var tips = document.getElementById('tips');
    // 1. 创建: 请求对象
     var request = new XMLHttpRequest();
     input.addEventListener('keyPress',getUserInfo,false);
     function getUserInfo(ev) {
         if (ev.key === 'Enter'){
             switch (true) {
                 case input.value.length === 0:
                     tips.innerHTML ='<span style="color: red">ID不能为空</span>';
                     return false;

                 case isNaN(input.value):
                     tips.innerHTML = "<span style='color: red'>ID必须为整数</span>"
                     return false;


                 default:
                     request.addEventListener('readystatechange',successCallback,false);
                     var data = encodeURIComponent(input.value);
                     request.open('GET','php/user_info.php?user_id='+data,true);
                     request.send(null);


             }
         }
     }

     function successCallback() {
         if (request.readyState === 4){
             tips.innerHTML = request.responseText;
         }
     }

     input.addEventListener('input',function () {
         tips.innerHTML = null;
     },false);
</script>
</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例

2.post方式表单验证:

    基本步骤:1.创建: 请求对象  2.监听: 成功回调   3.设置: 请求参数   4.发送: 异步请求   5.设置请求头类型

实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>post</title>
</head>
<body>
<h2>用户登录</h2>
<form action="" name="login">
    <p>
        <label for="username">用户:</label>
        <input type="text" name="username" id="username" placeholder="UserName">
    </p>
    <p>
        <label for="email">邮箱:</label>
        <input type="text" name="email" id="email" placeholder="example@email.com">
    </p>
    <p>
        <label for="password">密码:</label>
        <input type="password" name="password" id="password" placeholder="******" >
    </p>
    <p>
        <label for="remember">记住我:</label>
        <select name="remember" id="remember">
            <option value="1" selected>一天</option>
            <option value="7">一星期</option>
            <option value="30">一个月</option>
        </select>
    </p>
    <p>
        <button type="button" name="submit">提交</button>
    </p>
</form>

<script>
    var login = document.forms.namedItem('login');
    var btn = login.submit;
    var request = new XMLHttpRequest();
    login.username.addEventListener('blur', isEmpty, false);
    login.email.addEventListener('blur', isEmpty, false);
    login.password.addEventListener('blur', isEmpty, false);
    function isEmpty(ev) {
        if (ev.target.value.length === 0) {
            if (ev.target.nextElementSibling === null) {
                var tips = document.createElement('span');
                tips.style.color = 'red';
                switch (ev.target.name) {
                    case 'username':
                        tips.innerText = '用户名不能为空';
                        break;
                    case 'email':
                        tips.innerText = '邮箱不能为空';
                        break;
                    case 'password':
                        tips.innerText = '密码不能为空';
                        break;
                    default:
                        tips.innerText = '未定义错误';
                }
                ev.target.parentNode.appendChild(tips);

            }
            ev.target.focus();
        }
    }
    login.username.addEventListener('input', clearTips, false);
    login.email.addEventListener('input', clearTips, false);
    login.password.addEventListener('input', clearTips, false);

    function clearTips(ev) {
        var tips =  ev.target.nextElementSibling;
        if (tips !==null){
           tips.parentNode.removeChild(tips);
        }
    }
    btn.addEventListener('click',check,false);
    function check(ev) {
        var username = login.username.value;
        var email = login.email.value;
        var password = login.password.value;
        var remember = login.remember.value;
        if (username.length === 0 || email.length === 0 || password.length === 0){
            ev.target.removeEventListener('click',check,false);
            var blurEvent = new Event('BLUR');
            login.username.dispatchEvent(blurEvent);
            return false;
        }
        var data = 'username='+username+'&email='+email+'&password='+password+'&remember='+remember;
        request.addEventListener('readystatechange', successCallback, false);
        request.open('POST', 'php/check.php', true);
        request.setRequestHeader('content-type', 'application/x-www-form-urlencoded;charset=utf-8');
        request.send(data);
            }
    function successCallback(ev) {
        if (request.readyState === 4) {
            console.log(request.responseText);
        }
    }
</script>
</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议