发送短信实例

希望达到的效果:

  1. 在对应的文本框内容为空时不可以点击旁边的发送按钮
  2. 在发送一次短信后,在一定时间范围内不可以点击发送按钮,按钮里的文字内容修改为剩余时间

对应的代码编写:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>发送短信案例</title>
  </head>

  <body>
    手机号码: <input type="number" /> <button>发送</button>
    <script>
      //1.获取元素对象
      let btnEle = document.querySelector("button");
      let inEle = document.querySelector("input");
      // 2.绑定事件
        btnEle.onclick = function () {
        let Time = 4000;
        let timer;
        if (inEle.value.length > 0 && Time != 0) {
          btnEle.disabled = true;
          timer = setInterval(function () {
            btnEle.innerHTML = "剩余时间" + Time / 1000;
            console.log(Time);
            Time = Time - 1000;
            if (Time < 0) {
              clearTimeout(timer);
              btnEle.innerHTML = "发送";
              btnEle.disabled = false;
            }
          }, 1000);
        }
      };
    </script>
  </body>
</html>

上述图像是对应上述代码得到的结果,可以发现存在问题,忽视了在对应文本框没有内容时应该禁用发送按钮,代码的结构也可以修改的更加精简

针对问题修改:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>发送短信案例</title>
  </head>

  <body>
    手机号码: <input type="text" /> <button disabled>发送</button>
    <script>
      //1.获取元素对象
      let btnEle = document.querySelector("button");
      let inEle = document.querySelector("input");
      let num = 60; //倒计时时间;计数器
      // 2.绑定事件
      //blur---失去高亮
      inEle.addEventListener("blur", function () {
        //如果输入框的值为空,按钮禁用,否则启用
        if (this.value) {
          //this.value中没有内容时,输出null,转换为false
          btnEle.disabled = false; //启用
          btnEle.addEventListener("click", function () {
            let t = setInterval(function () {
              num--;
              btnEle.innerText = num + "秒后重新发送";
              if (num < 0) {
                btnEle.innerText = "发送";
                num = 60; //重置计数器
                btnEle.disabled = false;
                clearInterval(t); //停止计时器
              }
            }, 1000);
          });
        } else {
          btnEle.disabled = true; //禁用
        }
      });
    </script>
  </body>
</html>

修改后的代码对应前面有两点不同:

  1. 在最开始就禁用了按钮,所以对应绑定的事件也由按钮的点击事件变成了文本框输入后失去焦点事件,这样更加符合案例要求,更加符合实际.
  2. 第二点是剩余时间的变化,修改后的时间直接是以秒为单位,不用像修改前还需要进行单位换算,更加便利
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值