微信小程序实现多选功能

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

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日

相关文章

  • java 通过发送json,post请求,返回json数据的方法

    下面是详细讲解 Java 通过发送 JSON,POST 请求返回 JSON 数据的攻略: 1. 背景 我们在 Java 中常常需要通过网络请求来获取数据或者发送数据,HTTP 协议是最常见的应用层协议,而使用 HTTP 协议有两种方式: GET 请求和 POST 请求。GET 请求是通过 URL 传递参数,POST 请求是通过 Request Body 传递…

    Java 2023年5月26日
    00
  • Java SpringMVC自学自讲

    以下是关于“Java SpringMVC自学自讲”的完整攻略,其中包含两个示例。 1. 前言 SpringMVC是一种常用的Java Web开发框架,它可以帮助开发者快速构建Web应用程序。本攻略将详细讲解Java SpringMVC的自学自讲方法,帮助读者更好地掌握SpringMVC框架的使用方法。 2. 自学方法 以下是Java SpringMVC的自学…

    Java 2023年5月16日
    00
  • Java编程基础元素-运算符

    Java编程基础元素-运算符 介绍 在Java编程中,运算符是用于对数据进行操作的一种符号或关键字。Java编程语言支持以下类型的运算符: 算术运算符 关系运算符 位运算符 逻辑运算符 条件运算符 赋值运算符 这些运算符可以应用于不同的数据类型,例如整数、字符、浮点数、布尔值等。 算术运算符 算术运算符用于执行基本的算术操作,例如加、减、乘、除和取模运算。J…

    Java 2023年5月26日
    00
  • java agent 使用及实现代码

    Java Agent 是一个在 Java 虚拟机启动时就注入的 Java 类,可以对 JVM 接口及类库进行访问和修改,常用作 JVM 监控,代码植入等动态工具的实现。以下是 Java Agent 的使用及实现代码攻略。 简介 Java Agent 是 JVM 提供的一种扩展机制,可以在程序运行时动态地增强、修改、监控程序的功能。Java Agent 简单来…

    Java 2023年5月20日
    00
  • IntelliJ IDEA引入第三方jar包或查看Java源码的时候报decompiled.class file bytecode version:52.0(java 8)错误的解决办法

    当我们在使用 IntelliJ IDEA 引入第三方jar包或查看Java源码的时候,有时会出现以下错误提示信息: Error: java: decompiled.class file bytecode version:52.0 (java 8) 这是因为项目使用的Java版本与第三方jar包或源码使用的Java版本不一致导致的。要解决此问题,我们需要采取以…

    Java 2023年5月20日
    00
  • 关于各种排列组合java算法实现方法

    关于各种排列组合Java算法实现方法 简介 在计算机编程中,经常需要对一系列元素进行排列或组合,这就是排列组合算法。Java作为一门流行的编程语言,在排列组合问题上也提供了多种实现方法。本文将针对各种排列组合问题进行详细讲解,并提供相应的代码示例。 排列与组合 在开始讲解具体实现方法之前,先来区分一下排列与组合的概念。 排列是指将元素按照一定的顺序进行排列,…

    Java 2023年5月19日
    00
  • 聊一聊Java反射

    聊一聊Java反射 反射是Java面向对象编程中的一种重要机制,通过反射可以在运行时获取类的信息,以及操作类的实例对象。在Java编程中,反射具有广泛的应用价值,例如通过反射动态创建对象,访问对象的私有成员变量和方法等。本文将为你详细讲解Java反射的完整攻略,包含了反射的基本使用方法、常见的场景应用以及对性能的影响等方面。 反射的基本使用方法 要使用反射,…

    Java 2023年5月19日
    00
  • SpringMVC中ModelAndView的使用及说明

    SpringMVC中ModelAndView的使用及说明 在SpringMVC中,ModelAndView是一个非常重要的类,用于表示模型和视图的组合。本文将详细讲解SpringMVC中ModelAndView的使用及说明,包括如何创建ModelAndView对象、如何设置模型数据、如何设置视图名称、如何使用重定向和转发等。 创建ModelAndView对象…

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