이 효과는 주로 입력 이벤트와 CSS 변환의 동적 변경을 통해 달성됩니다.
실제 디버깅 과정에서 입력 컴포넌트의 bininput 이벤트가 발생한 후 다시 호출되는 디테일 객체에는 시뮬레이터의 커서 속성이 포함되어 있습니다. 그러나 실제 디바이스에서는(Android에서 테스트되었으며 테스트되지 않았습니다. iOS에서 테스트) 속성이 없으며 마지막으로 세부 객체에서 값 속성의 길이를 선택하여 입력 자릿수를 동기화합니다.
바인드포커스 이벤트에는 CSS를 변경하는 코드를 추가하지 않는 것이 가장 좋습니다.
미리보기 이미지:
JS:
//index.js//获取应用实例var app = getApp() Page({ data: { v_username_border:'', //用户输入框底部border样式 v_pwd_border:'', // 密码输入框底部border样式 v_float_username:'', // 浮动文字字transform 样式 v_float_pwd:'', num_current_un:0, // 当前输入的文本位数 sp_num_current_un:'', // 当前输入文本位数超过限制时的样式 isPwdError:false // 提交时 密码输入错误时的文本提示 }, onLoad: function () { console.log('onLoad') }, // 用户名输入框获取焦点时事件回调 usernameFocus:function(e){ var that = this; console.log(e.detail) }, // 用户名输入框输入时事件回调 usernameInput:function(e){ console.log(e.detail) this.setData({ v_username_border:'border-bottom:1px solid red', num_current_un:e.detail.value.length }) if(e.detail.value.length!=0){ this.setData({ v_float_username:'color:red ;transform: translateY(-18.5px)', sp_num_current_un:'color:lightseagreen;' }) if(e.detail.value.length>20){ this.setData({ sp_num_current_un:'color:orangered;' }) } }else{ this.setData({ v_float_username:'transform: translateY(0px)', }) } }, // // 用户名输入框失去焦点时回调 usernameBlur:function(e){ console.log("onBlur") this.setData({ v_username_border:'border-bottom:1px solid grey' }) }, pwdFocus:function(e){ console.log('onFocus') }, pwdInput:function(e){ this.setData({ v_pwd_border:'border-bottom:1px solid red', isPwdError:false }) console.log(e.detail) if(e.detail.value.length!=0){ this.setData({ v_float_pwd:'color:red ; transform: translateY(-18.5px)', }) }else{ this.setData({ v_float_pwd:'transform: translateY(0px)', }) } }, pwdBlur:function(e){ console.log("onBlur") this.setData({ v_pwd_border:'border-bottom:1px solid grey; ' }) },// 登录按钮模拟表单提交 可用form组件代替 onLogin:function(e){ this.setData({ isPwdError:true }) } })
WeChat 미니 프로그램용 MaterialDesign 더보기- -input 컴포넌트 관련 글은 PHP 중국어 홈페이지를 주목해주세요!