You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB登录表单文本框失焦后恢复placeholder占位符问题求助

解决方案

问题原因

  • 仅实现了用户名输入框的占位符逻辑,密码输入框的点击、失焦事件未做对应处理
  • 仅绑定Click事件触发清空逻辑,无法覆盖用户通过Tab键切换进入输入框的场景,会导致默认占位符未清空的问题
  • 空值判断缺少去空格处理,容易出现用户输入空格后删除残留空白,导致空值判断失效的情况

修正后完整代码

Private Sub Form_Load()
    ' 初始化两个输入框的默认占位符
    txt_username.Value = "Username"
    txt_password.Value = "Password"
End Sub

' 用户名输入框获得焦点时清空默认值
Private Sub txt_username_GotFocus()
    If Trim(txt_username.Value) = "Username" Then
        txt_username.Value = ""
    End If
End Sub

' 用户名输入框失焦时恢复占位符
Private Sub txt_username_LostFocus()
    If Trim(txt_username.Value) = "" Then
        txt_username.Value = "Username"
    End If
End Sub

' 密码输入框获得焦点时清空默认值
Private Sub txt_password_GotFocus()
    If Trim(txt_password.Value) = "Password" Then
        txt_password.Value = ""
        ' 若需要隐藏密码输入内容,可开启下方密码掩码配置
        ' txt_password.PasswordChar = "*"
    End If
End Sub

' 密码输入框失焦时恢复占位符
Private Sub txt_password_LostFocus()
    If Trim(txt_password.Value) = "" Then
        txt_password.Value = "Password"
        ' 恢复占位符时取消密码掩码,避免占位符显示为星号
        ' txt_password.PasswordChar = ""
    End If
End Sub

优化说明

  • 将原有的Click事件替换为GotFocus事件,覆盖所有输入框获得焦点的场景,不管是鼠标点击还是键盘Tab切换都能正常触发清空逻辑
  • 增加Trim()函数去除输入内容前后的空白字符,解决删除内容后残留空格导致占位符不恢复的问题
  • 补充了密码输入框的完整逻辑,额外增加了密码掩码的可选配置,避免占位符显示为密文的问题

内容的提问来源于stack exchange,提问作者Tom TK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 11:06:05