小程序实现弹出输入框

2023-10-27

1.微信自带组件

样式:

wxml

<view class="close" bindtap="close">拒绝</view>

js

Page({
  //拒绝
  close(e) {
    wx.showModal({
      editable:true,//显示输入框
      placeholderText:'输入拒绝原因',//显示输入框提示信息
      success: res => {
        if (res.confirm) { //点击了确认
          console.log(res.content)//用户输入的值
        } else {
          console.log('用户点击了取消')
        }
      }
    })
  },
})

详见:wx.showModal(Object object) | 微信开放文档

2.自定义组件

样式:

wxml

<view class="close" bindtap="close">拒绝</view><!--点击拒绝弹出-->
<block wx:if="{{isShowConfirm}}">
      <view class='toast-box'>
        <view class='toastbg'></view>
        <view class='showToast'>
            <view class='toast-main'>
                <view class='toast-input'>
                    <input type='text'  bindinput='setValue' placeholder="请输入拒绝原因" data-name='stuEidtName'></input>
                </view>
            </view>
            <view class='toast-button'>
                <view class='button1'>
                    <view catchtap='cancel'>取消</view>
                </view> 
                 <view class='button2'>
                    <view  catchtap='confirmAcceptance'>确定</view>
                </view>
            </view>
        </view>
    </view>
  </block>

 wxss

/* 弹出窗 */
.toast-box {
  width: 100%;
  height: 100%;
  opacity: 1;
  position: fixed;
  top: 0px;
  left: 0px;
}
.toastbg {
  opacity: 0.5;
  background-color: black;
  position: absolute;
  width: 100%;
  min-height: 100vh;
}

.showToast {
  position: absolute;
  opacity: 1;
  width: 80%;
  margin-left: 10%;
  margin-top: 70%;
}
.toast-main {
  padding-top: 2vh;
  padding-bottom: 2vh;
  background-color: white;
  text-align: center;
  border-top-left-radius: 16rpx;
  border-top-right-radius: 16rpx;
}

.toast-input {
  margin-left: 5%;
  margin-right: 5%;
  margin-top:10%;
  margin-bottom:10%;
  background-color: rgb(240, 240, 240);
  padding-left: 2vh;
  padding-right: 2vh;
  padding-top: 1vh;
  padding-bottom: 1vh;
}
.toast-input input{
  background-color: rgb(240, 240, 240);
}
.toast-button {
  display: flex;
  background-color: white;
  height:50px;
  width:100%;
  border-radius: 0px;
  border-bottom-left-radius: 16rpx;
  border-bottom-right-radius: 16rpx;
  border-top:1px solid rgb(211, 211, 211);
}

.button1 {
  width: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 0px;
  border-bottom-left-radius: 16rpx;
}

.button2 {
  width: 50%;
  border-left:1px solid rgb(211, 211, 211);
  display: flex;
  align-items: center;
  justify-content: center;
  color:#40A4D6;
}

js

Page({
  data: {
    isShowConfirm:false
  },
  //输入框中的值
  setValue: function (e) {
    this.setData({
      walletPsd: e.detail.value
    })
  },
  //点击取消按钮
  cancel: function () {
    var that = this
    that.setData({
      isShowConfirm: false,
    })
  },
  //点击确认按钮
  confirmAcceptance:function(){
    var that = this
    that.setData({
      isShowConfirm: false,
    })
  },
  //拒绝
  close(e) {
    this.setData({
      isShowConfirm: true,
    }) 
  },
})

3.多文本框

样式:

 wxml

<view class="update" bindtap="update" data-statu="open">修改</view>
<!--弹出框-->
<view class="drawer_screen" bindtap="update" data-statu="close" wx:if="{{showModalStatus}}"></view>
<!--content-->
<!--使用animation属性指定需要执行的动画-->
<view class="animation_position">
  <view animation="{{animationData}}" class="drawer_box" wx:if="{{showModalStatus}}">
    <!--drawer content-->
    <view class="drawer_title">修改信息</view>
    <view class="drawer_content">
      <view class="grid">
        <label class="title col-0">报修人员:</label>
        <input class="input_base input_h30 col-1" bindblur="name" placeholder="请输入报修人员姓名"></input>
      </view>
      <view class="grid">
        <label class="title col-0">联系电话:</label>
        <input class="input_base input_h30 col-1" bindblur="phone" placeholder="请输入报修人员电话"></input>
      </view>
      <view class="grid">
        <label class="title col-0">维修产品:</label>
        <input class="input_base input_h30 col-1" bindblur="product" placeholder="请输入维修产品名称"></input>
      </view>
      <view class="grid">
        <label class="title col-0">故障类型:</label>
        <input class="input_base input_h30 col-1" bindblur="type" placeholder="请输入故障类型"></input>
      </view>
      <view class="bottom grid">
        <label class="title col-0">故障地点:</label>
        <input class="input_base input_h30 col-1" bindblur="address" placeholder="请输入地点"></input>
      </view>
      <view class="bottom grid">
        <label class="title col-0">故障描述:</label>
        <input class="input_base input_h30 col-1" bindblur="description" placeholder="请输入故障描述"></input>
      </view>
    </view>
    <view class="btn_ok" bindtap="update" data-statu="close">确定</view>
  </view>
  
</view>

wxss

/* 隐藏内容样式 */
/*mask*/
.drawer_screen {
  width: 100%;
  height: 100%;
  position: fixed;
  top: 0;
  left: 0;
  z-index: 1000;
  background: #000;
  opacity: 0.5;
  overflow: hidden;
}
/*content*/
.animation_position{
  display: flex;
  width:100%;
  justify-content: center;
}
.drawer_box{
  overflow: hidden;
  position: fixed;
  /* top:80px; */
  bottom:90px;
  z-index: 1001;
  background: #FAFAFA;
  border-radius: 3px;
  width: 90%;
}
.drawer_title {
  padding: 15px;
  font: 20px "microsoft yahei";
  text-align: center;
}
.drawer_content {
  overflow-y: scroll;
  /*超出父盒子高度可滚动*/
}
.btn_ok {
  margin-top:5%;
  padding: 10px;
  font: 20px "microsoft yahei";
  text-align: center;
  border-top: 1px solid #E8E8EA;
  color: #40A4D6;
}
.bottom {
  padding-bottom: 8px;
}
.title {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 25%;
  margin:5% 0 0 0;
  border-bottom: 2rpx solid #ccc;
}
.input_base {
  width:75%;
  margin:5% 0 0 0;
  padding-left:5%;
  border-bottom: 2rpx solid #ccc;
}
input {
  font: 15px "microsoft yahei";
  background: #fff;
  color: #000;
}
.grid {
  display: flex;
  margin:20px;
}

js

const app = getApp()
let id = ''
let name = ''
let phone = ''
let product = ''
let type = ''
let address = ''
let description = ''
Page({
  data: {
    showModalStatus: false,
  }, 
  //信息修改
  //获取用户输入信息
  name(event) { //获取报修人员姓名
    name = event.detail.value
    console.log("name", name)
  },
  phone(event) { //获取手机号
    phone = event.detail.value
    console.log("phone", phone)
  },
  product(event) { //维修产品
    product = event.detail.value
    console.log("produc", product)
  },
  type(event) { //故障类型
    type = event.detail.value
    console.log("type", type)
  },
  address(event) { //地址
    address = event.detail.value
    console.log("address", address)
  },
  description(event) { //描述
    description = event.detail.value
    console.log("description", description)
  },
  update: function (e) {
    var currentStatu = e.currentTarget.dataset.statu;
    this.util(currentStatu)
  },
  util: function (currentStatu) {
    /* 动画部分 */
    // 第1步:创建动画实例  
    var animation = wx.createAnimation({
      duration: 200, //动画时长 
      timingFunction: "linear", //线性 
      delay: 0 //0则不延迟 
    });
    // 第2步:这个动画实例赋给当前的动画实例 
    this.animation = animation;

    // 第3步:执行第一组动画 
    animation.opacity(0).rotateX(-100).step();

    // 第4步:导出动画对象赋给数据对象储存 
    this.setData({
      animationData: animation.export()
    })

    // 第5步:设置定时器到指定时候后,执行第二组动画 
    setTimeout(function () {
      // 执行第二组动画 
      animation.opacity(1).rotateX(0).step();
      // 给数据对象储存的第一组动画,更替为执行完第二组动画的动画对象 
      this.setData({
        animationData: animation
      })
      //关闭 
      if (currentStatu == "close") {
        this.setData({
          showModalStatus: false
        });
      }
    }.bind(this), 200)
    // 显示 
    if (currentStatu == "open") {
      this.setData({
        showModalStatus: true
      });
    }
  },
})

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

小程序实现弹出输入框 的相关文章

随机推荐

  • 【C语言】浮点型数据为什么不能直接比较

    由于浮点型的精度是有限的 经过运算就可能存在舍入误差 比如 x y y x 所以如果要比较浮点型数值 最好要先定义一个极小值MIN作为允许误差 1 浮点型与0比较 define MIN 0 0000000001 double temp if
  • 1个星期,教你快速上手Unity ASE-【UI流动】

    目录 前言回顾 效果图 节点预览 步骤 前言回顾 不熟悉节点属性的可以点击传送门预览 传送门 1个星期 教你快速上手Unity ASE 预览 传送门 1个星期 教你快速上手Unity ASE 遮罩 传送门 1个星期 教你快速上手Unity
  • Qt中ui文件的使用

    用designer设计的 ui文件可以通过uic工具转换为 h文件 在编译时也会自动生成这样一个ui h文件 有了这个 h文件就可以直接按照纯C 的方式对其中的类进行调用 ui文件的使用就是利用默认工具uic自动产生一个类 然后用该类的se
  • 【数据结构与算法】<==>二叉树下

    目录 堆的应用 1 堆排序 1 建堆 2 向下调整的时间复杂度 3 向上调整建堆的时间复杂度 二叉树链式结构的实现 遍历操作 其他操作 堆的应用 1 堆排序 堆排序即利用堆的思想来进行排序 总共分为两个步骤 1 建堆 升序 建大堆 序 建大
  • 小程序隐私保护的常见问题汇总 小程序隐私配置解决

    涉及调用用户个人信息相关接口的 每一个小程序均需补充相应用户隐私保护指引 1 设置隐私保护的时候 clientip is not registered 返回的错误信息 errCode 61004 errMsg access clientip
  • UE4,UE5虚幻引擎,怎么在蓝图中获取FPS帧速率,显示在UMG(UI)上

    前言 在UE中可以使用命令行比如stat fps显示帧率 但只是显示在界面 假设我们要在蓝图中获取FPS帧率 并且显示在我们创建的UMG控件蓝图 这种stat fps命令行的形式就不行了 因为它只会固定显示在右上角的位置 1 在Tick中获
  • js data 日期初始化

    创建一个日期对象 var objDate new Date arguments list 参数形式有 以下 种 1 new Date month dd yyyy hh mm ss 2 new Date month dd yyyy 3 new
  • 小白数学建模模型入门(一)

    数学建模模型入门 一 1 层次分析法 AHP 针对于难以完全定量的复杂系统做出决策的模型和方法 如图 判断好目标层 准测层 可理解为考虑元素 方案层 不把所有因素放在一起比较 而是两两互相比较 两因素比较的标度由参考论文或其他途径得出 得到
  • 【C++】类的默认成员函数(上)

    文章目录 类的默认成员函数 1构造函数 1 1构造函数特征 1 2编译器自动生成的构造函数 1 3编译器默认的构造函数 1 4C 11特征 2析构函数 2 1特征 2 2编译器默认的析构函数 3拷贝构造函数 3 1特征 3 2编译器默认生成
  • ssh渗透与hydra爆破(简明不啰嗦)

    适合新手上路 MSF与hydra两种方式渗透22端口 后进行远程连接 如有不足请各位见谅 此次实验仅供参考 切勿做违法犯罪 出事一切与本人无关后果自负 希望大家早日成为白帽子 渗透机 kali 靶机 192 168 75 128 1 扫描局
  • vim配置全攻略(2)——vim的简单配置

    这篇文章主要讲的是vim的简单配置 相对于vim内置的一些快捷键和功能 vim的客制化才是vim的灵魂 也是vim存活31年仍被热衷的原因 如果你还不了解vim的基本操作和体系 我建议你看一下我上一篇文章 vim配置全攻略 1 vim的基本
  • 【ARM】rk3399挂载nfs报错

    挂载nfs报错mount mnt bad option for several filesystems e g nfs cifs you might need a sbi 实验1 无效 sudo apt get install cifs u
  • 基于Spring Cloud实现日志管理模块

    简介 无论在什么系统中 日志管理模块都属于十分重要的部分 接下来会通过注解 AOP MQ的方式实现一个简易的日志管理系统 思路 注解 标记需要记录日志的方法 AOP 通过AOP增强代码 利用后置 异常通知的方式获取相关日志信息 最后使用MQ
  • Python+Django+Nginx+Uwsgi(史上最全步骤)

    步骤 Python安装 第一步安装Python 很多购买的服务器linux系统中自带python2和python3 我是直接使用自带的python3 5版本的 如果系统中没有 则自己安装 如下 1 下载 wget https www pyt
  • 手写一个解析器

    作者 jolamjiang 腾讯 WXG 前端开发工程师 前言 最近工作中有一些同学在做一些效能工具的时候遇到需要写一门领域相关语言 DSL 及其解析器的场景 笔者恰好有相关的经验向大家指一下北 首先请问一下大家有没有想过这个功能怎么做 点
  • MNIST2_LGB_XGB训练预测

    针对MNIST数据集进行XGB LGB模型训练和预测 部分脚本如下 完整脚本见笔者github lgb param boosting gbdt num iterations 145 num threads 8 verbosity 0 lea
  • 如何实现区块链技术安全?

    随着人们对区块链技术的研究与应用 区块链系统除了其所属信息系统会面临病毒 木马等恶意程序威胁及大规模DDoS攻击外 还将由于其特性而面临独有的安全挑战 区块链可能是安全的 但所有与之交互的软件都是如此 在许多情况下 没有 那么区块链究竟如何
  • 选择排序分析动图演示

    选择排序 思路总结 1 首先在未排序序列中找到最小 大 元素 存放到排序序列的起始位置 2 再从剩余未排序元素中继续寻找最小 大 元素 然后放到已排序序列的末尾 3 重复第二步 直到所有元素均排序完毕 动图演示 代码示例 public st
  • SpringMvc项目配置根据环境自动读取不同的配置文件

    将原有的配置文件拷贝一份 分别放在不同的文件夹内 2 application context xml中读取配置文件的地方 引入变量
  • 小程序实现弹出输入框

    1 微信自带组件 样式 wxml