uni-app踩坑 - 解决ios系统下微信公众号H5页面软键盘弹出后页面整体上移

问题出现的条件是ios系统部分机型,在微信公众号H5页面上,点击input输入后,软键盘收回,但整体页面出现上移,没有自动弹回到页面顶部。

解决的思路是在input失去焦点时触发事件,手动回到页面顶部。

input
输入框。

事件属性说明

属性名类型默认值说明平台差异说明
@inputEventHandle当键盘输入时,触发input事件,event.detail = {value}差异见下方 Tips
@focusEventHandle输入框聚焦时触发,event.detail = { value, height },height 为键盘高度仅微信小程序、5+App(HBuilderX 2.2.3) 、QQ小程序支持 height
@blurEventHandle输入框失去焦点时触发,event.detail = {value: value}
@confirmEventHandle点击完成按钮时触发,event.detail = {value: value}

Tips

  • input 事件处理函数可以直接 return 一个字符串,将替换输入框的内容。仅微信小程序支持。
  • input 事件处理函数内实时修改当前值不生效,可以延迟设置,例如:setTimeout(() => { this.value = 100 }, 0)
  • input 组件上有默认的 min-height 样式,如果 min-height 的值大于 height 的值那么 height 样式无效。

uni.pageScrollTo(OBJECT)
将页面滚动到目标位置。

OBJECT参数说明

参数名类型必填说明
scrollTopNumber滚动到页面的目标位置(单位px)
durationNumber滚动动画的时长,默认300ms,单位 ms

具体代码:

	<form @submit="clickdl" @reset="formReset">
	  <view class="login-form-input">
	    <input
	      name="username"
	      type="text"
	      @blur="toTop"
	      placeholder-class="f-gray"
	      placeholder="请输入您的账号">
	  </view>
	  <view class="login-form-input">
	    <input
	      name="password"
	      type="password"
	      @blur="toTop"
	      placeholder-class="f-gray"
	      placeholder="请输入您的密码">
	  </view>
	  <button
	    formType="submit"
	    class="login-form-btn"
	    >确定</button>
	</form>
	toTop() {
	  uni.pageScrollTo({
	    scrollTop: 0,
	    duration: 0
	  })
	}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
uni.app 中使用微信公众号 H5 支付,你可以按照以下步骤进行操作: 1. 首先,确保你已经配置好了微信公众号支付功能,并且已经获取到了支付的相关参数,例如订单号、支付金额等。 2. 在 uni-app 中,可以使用 `uni.request` 或其他网络请求库来发起支付请求。你需要向微信支付接口发送一个 POST 请求,包含支付相关的参数。 例如: ```javascript uni.request({ url: 'https://api.mch.weixin.qq.com/pay/unifiedorder', // 微信支付接口地址 method: 'POST', data: { // 支付参数,例如 appid、mch_id、nonce_str、body、out_trade_no、total_fee 等 }, success: (res) => { // 请求成功的回调函数 // 解析返回的数据,获取预支付交易会话标识 prepay_id const prepayId = res.data.prepay_id; // 调用 H5 支付接口进行支付 uni.requestPayment({ provider: 'wxpay', timeStamp: '', // 间戳 nonceStr: '', // 随机字符串 package: '', // 统一下单接口返回的 prepay_id 参数值 signType: 'MD5', paySign: '', // 签名 success: (res) => { // 支付成功的回调函数 console.log(res); }, fail: (err) => { // 支付失败的回调函数 console.log(err); } }); }, fail: (err) => { // 请求失败的回调函数 console.log(err); } }); ``` 在上述代码中,你需要根据实际情况填写支付接口地址、支付参数、预支付交易会话标识 prepay_id 以及支付的回调函数。 3. 当用户点击支付按钮后,会触发支付请求,用户将会跳转到微信支付页面完成支付操作。 请注意,以上代码仅为示例,实际使用需要根据 uni-app 中的具体语法和微信支付接口的要求进行相应的调整和处理。同,确保在后端服务器中进行订单处理和验证,以确保支付的安全和准确性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值