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

Blazor Server中动态修改输入框边框色,避免覆盖默认聚焦样式

解决Blazor Server输入框动态校验边框重叠问题

直接用内联style绑定border-color会和浏览器默认的:focus伪类样式冲突,改成CSS类控制状态就能解决,步骤如下:

1. 定义状态控制的CSS样式

在组件的<style>标签里添加以下样式,覆盖不同状态下的边框和聚焦效果:

.input-validation {
    border: 1px solid #ced4da; /* 默认灰色边框,和浏览器默认对齐 */
}

.input-validation:focus {
    /* 默认聚焦样式,可根据需求调整 */
    border-color: #86b7fe;
    outline: 0;
    box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
}

/* 格式正确状态 */
.input-validation.valid {
    border-color: #198754;
}
.input-validation.valid:focus {
    border-color: #198754;
    box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25);
}

/* 格式错误状态 */
.input-validation.invalid {
    border-color: #dc3545;
}
.input-validation.invalid:focus {
    border-color: #dc3545;
    box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);
}

2. 修改Razor输入框代码

把内联style换成动态绑定CSS类,同时用@oninput替代@onkeyup(能捕获粘贴等非键盘输入):

<td>
    <input type="text" 
           class="input-validation @validationClass" 
           @bind="PLC_VAR_name" 
           @bind:event="oninput" 
           @oninput="CheckPLCVarName" />
</td>

3. 调整校验逻辑代码

在组件的C#代码里维护校验状态类,根据输入内容切换状态:

private string PLC_VAR_name { get; set; } = string.Empty;
private string validationClass = string.Empty;

private void CheckPLCVarName(ChangeEventArgs e)
{
    var inputValue = e.Value?.ToString() ?? string.Empty;

    if (string.IsNullOrWhiteSpace(inputValue))
    {
        // 空输入时回到默认样式
        validationClass = string.Empty;
    }
    else if (IsFormatValid(inputValue)) // 替换成你的实际格式校验逻辑
    {
        validationClass = "valid";
    }
    else
    {
        validationClass = "invalid";
    }
}

// 示例校验方法,根据你的需求修改规则
private bool IsFormatValid(string value)
{
    // 比如校验是否为字母数字组合
    return System.Text.RegularExpressions.Regex.IsMatch(value, @"^[a-zA-Z0-9]+$");
}

效果说明

  • 输入框未输入内容时,保持默认样式,聚焦时显示默认的聚焦边框
  • 输入内容后,格式正确则边框为绿色(聚焦时也是绿色阴影),错误则为红色(聚焦时红色阴影)
  • 完全避免了默认聚焦样式和自定义边框的重叠问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 01:55:32