微信小程序实现多选功能

微信小程序实现多选功能的完整攻略可以分为以下步骤:

1.在页面中定义 checkbox 组件

首先需要在页面的 wxml 文件中定义多组 checkbox 组件,每个复选框都应该设置不同的 value 值以便于选项的区分,同时为了便于管理,可以用相同的 name 属性将多个选项组成一个组. 下面是一个示例代码:

<checkbox-group bindchange="selectedList">
  <label wx:for="{{list}}">
    <checkbox value="{{item.id}}" name="checkboxGroup">{{item.name}}</checkbox>
  </label>
</checkbox-group>

2.编写事件处理函数

当用户选择一个或多个复选框时,会触发 checkbox 组件的 change 事件,为了获取用户选择的结果需要在 js 文件中编写事件处理函数。当用户选择一个复选框时,事件处理函数会接收到一个事件对象,其中包含了详细信息,如选项的 value 值,是否选中等状态,可以通过调用 event.detail.value 来获取用户选择的 value 值。

Page({
  data: {
    list: [{
        id: 1,
        name: '选项1'
      },
      {
        id: 2,
        name: '选项2'
      },
      {
        id: 3,
        name: '选项3'
      }
    ],
    selectedList: [] // 用于存放用户选择的结果
  },

  selectedList: function (event) {
    this.setData({
      selectedList: event.detail.value
    });
  }
})

3.显示用户选择的结果

最后需要用一个标签来显示用户选择的结果,可以通过引用 data 中定义的 selectedList,来动态显示用户选择的结果,同时为了便于用户知道已经选择的选项,在页面中添加一个按钮,用户点击该按钮时,会使用 wx.showToast 方法弹出已选择的选项。

<view wx:if="{{selectedList.length > 0}}">
  已选择{{selectedList.length}}项:
  <block wx:for="{{selectedList}}" wx:key="index">
    <view>{{item}} </view>
  </block>
  <button type="primary" bindtap="onSubmit">确认</button>
</view>
Page({
  data: {
    list: [{
        id: 1,
        name: '选项1'
      },
      {
        id: 2,
        name: '选项2'
      },
      {
        id: 3,
        name: '选项3'
      }
    ],
    selectedList: [] // 用于存放用户选择的结果
  },

  selectedList: function (event) {
    this.setData({
      selectedList: event.detail.value
    });
  },

  onSubmit: function () {
    wx.showToast({
      title: `已选择:${this.data.selectedList}`,
      icon: 'none',
      duration: 2000
    })
  }
})

示例说明:

假设现在需要实现一个电影评分的小应用,用户可以选择想看的电影,并为其评分,最后点击提交按钮将评分结果保存到服务器上。

首先在 wxml 中定义 checkbox 组件来实现电影的选择,同时为每个电影添加评分项,如下所示:

<checkbox-group bindchange="selectedMovies">
  <block wx:for="{{movies}}" wx:key="id">
    <view class="movie-item">
      <view class="movie-title">{{item.title}}</view>
      <view class="movie-image">
        <image src="{{item.image}}" mode="aspectFill"></image>
      </view>
      <view class="movie-score">
        <text>评分:</text>
        <input type="number" min="0" max="10" bindinput="updateScore" data-id="{{item.id}}" value="{{item.score}}"/>
      </view>
      <checkbox class="movie-checkbox" value="{{item.id}}" name="movies">{{item.title}} </checkbox>
    </view>
  </block>
</checkbox-group>

然后在对应的 js 文件中编写 selectedMovies 事件处理函数,用于保存用户选择的电影:

const app = getApp()

Page({
  data: {
    movies: [
      { "id": 1, "title": "福尔摩斯小姐", "image": "https://img3.doubanio.com/view/photo/m/public/p2360160649.jpg", "score": "8.0" },
      { "id": 2, "title": "无人知晓", "image": "https://img9.doubanio.com/view/photo/m/public/p2519746028.jpg", "score": "7.2" },
      { "id": 3, "title": "红辣椒", "image": "https://img3.doubanio.com/view/photo/m/public/p1181228593.jpg", "score": "6.8" }
    ],
    selectedMovies: []
  },

  selectedMovies: function (event) {
    this.setData({
      selectedMovies: event.detail.value
    });
  },

  updateScore: function (event) {
    let index = event.currentTarget.dataset.id
    let score = event.detail.value
    let key = `movies[${index - 1}].score`
    this.setData({
      [key]: score
    })
  },

  onSubmit: function () {
    wx.showLoading({
      title: '正在提交中...',
    })

    // 此处可以通过 ajax 将数据提交到服务器上进行保存。
    // 由于没有实际的服务器,这里就不再写出真正的 ajax 请求了。
    // just mock here
    setTimeout(() => {
      wx.hideLoading()
      wx.showToast({
        title: `已选择:${this.data.selectedMovies}`,
        icon: 'none',
        duration: 2000
      })
    }, 2000);
  }
})

最后,需要添加一个提交按钮,用于提交用户选择的结果,同时,在页面中添加 wx.showToast 方法。当用户点击提交按钮时,会弹出已选择的电影信息和评分信息。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:微信小程序实现多选功能 - Python技术站

(2)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • jsp倒计时简单实现方法

    关于 “jsp倒计时简单实现方法” ,我可以提供以下详细的攻略: 一、前置知识 在实现倒计时的过程中,需要了解基本的前端技术(如html、css、JavaScript)和后端技术(如jsp等),并且需要了解 Javascript 定时器的使用方法。 二、实现步骤 创建一个jsp页面,实现基本的页面布局(比如可以放置一个计时器 div 容器)。 在页面中加入J…

    Java 2023年6月15日
    00
  • Java执行shell命令的实现

    Java可以通过运行shell命令来与操作系统进行交互,可以使用以下三种方式来执行shell命令: Runtime类 ProcessBuilder类 Process类 Runtime类 Java中有一个常量对象Runtime代表着当前Java应用程序的运行环境,可以使用Runtime类中的exec()方法在程序中执行shell命令。 import java.…

    Java 2023年5月26日
    00
  • java实现简单的客户信息管理系统

    针对这个问题,我可以给出如下完整攻略: 1. 确定功能需求 作为一款客户信息管理系统,需要具备以下基本功能: 添加客户信息 修改客户信息 删除客户信息 查询客户信息 在确定了功能需求之后,就要开始考虑如何实现了。 2. 设计数据库表结构 由于需要操作客户信息,我们需要设计数据库表来承载客户信息。以下是一个简单的示例表结构: CREATE TABLE cust…

    Java 2023年5月19日
    00
  • Spring Data Exists查询最佳方法编写示例

    下面是完整攻略,包含两条示例: 背景 在开发中,我们时常需要查询某个实体是否在数据库中存在。对于这种查询,我们可以采用多种方式实现,但是存在一些别出心裁的方式可以执行此操作。 最佳方法——使用Spring Data的Exists方法 Spring Data JPA 提供了一个快捷方法,使我们可以很容易地查询实体是否存在: boolean existsById…

    Java 2023年5月20日
    00
  • Java中基于Aspectwerkz的AOP

    Java中基于Aspectwerkz的AOP是一种切面编程的技术,它可以在不修改原有业务逻辑代码的情况下,对业务逻辑进行增强,比如添加日志、缓存、事务等。 下面是Java中基于Aspectwerkz的AOP的完整攻略,包含了环境搭建、Aspectj语法介绍、示例说明等内容。 环境搭建 下载Aspectwerkz包:在Aspectwerkz官网下载最新版本的A…

    Java 2023年6月15日
    00
  • SpringBoot统一返回JSON格式实现方法详解

    根据你给出的主题,我将为你提供一个完整的 Spring Boot 统一返回 JSON 格式的实现方法攻略。 什么是 Spring Boot 统一返回 JSON 格式 Spring Boot 是一种基于 Spring 框架的轻量级应用程序开发框架,它可以非常快速地构建 Web 应用程序和 RESTful 服务。随着 RESTful 服务的流行,Spring B…

    Java 2023年5月20日
    00
  • 五种 JSP页面跳转方法详解

    现在我将为你详细讲解“五种 JSP 页面跳转方法详解”的完整攻略。 一、为什么需要 JSP 页面跳转 JSP 页面跳转是网站开发中常用的功能,在实现页面跳转时可以提高用户的交互体验和界面美感。因此,我们有必要了解 JSP 页面跳转的实现方法。 二、五种 JSP 页面跳转方法 在 JSP 页面跳转中常用的有以下五种方法: 1. 使用响应重定向 使用响应重定向(…

    Java 2023年6月15日
    00
  • gateway、webflux、reactor-netty请求日志输出方式

    为了让大家更好地了解 “gateway、webflux、reactor-netty请求日志输出方式”,我将分别讲解这三个主题,并提供相应的示例代码,在此之前,请确保已经安装好了Java环境,并了解基本的Spring Boot框架。 Gateway请求日志输出方式 Gateway是Spring Cloud的组件之一,可以将多个微服务组合起来作为一个整体对外提供…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部