From c8c67f78def36800dcd4a67bd2815d49c59ac70f Mon Sep 17 00:00:00 2001 From: braia123 Date: Mon, 3 Nov 2025 20:04:12 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E8=B5=8B=E5=80=BC=E7=BB=99Value=E6=97=B6?= =?UTF-8?q?=E6=9B=B4=E6=96=B0input=E6=98=BE=E7=A4=BA=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/Samples/AutoFills.razor | 1 + .../Components/Samples/AutoFills.razor.cs | 8 ++++++++ src/BootstrapBlazor.Server/Locales/en-US.json | 3 ++- src/BootstrapBlazor.Server/Locales/zh-CN.json | 3 ++- src/BootstrapBlazor/Components/AutoFill/AutoFill.razor.cs | 1 + 5 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/BootstrapBlazor.Server/Components/Samples/AutoFills.razor b/src/BootstrapBlazor.Server/Components/Samples/AutoFills.razor index a7f8094fd17..41fa4d7209f 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/AutoFills.razor +++ b/src/BootstrapBlazor.Server/Components/Samples/AutoFills.razor @@ -9,6 +9,7 @@
@((MarkupString)@Localizer["NormalDesc"].Value)
+ diff --git a/src/BootstrapBlazor.Server/Components/Samples/AutoFills.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/AutoFills.razor.cs index e0c5051334e..e4f6c7902ca 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/AutoFills.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/AutoFills.razor.cs @@ -213,6 +213,14 @@ private AttributeItem[] GetAttributes() => Type = "bool", ValueList = "true/false", DefaultValue = "false" + }, + new() + { + Name=nameof(AutoFill.IsAutoClearWhenInvalid), + Description=Localizer["AttIsAutoClearWhenInvalid"], + Type="bool", + ValueList="true/false", + DefaultValue="false" } ]; } diff --git a/src/BootstrapBlazor.Server/Locales/en-US.json b/src/BootstrapBlazor.Server/Locales/en-US.json index 31e9f235488..1ba921f644f 100644 --- a/src/BootstrapBlazor.Server/Locales/en-US.json +++ b/src/BootstrapBlazor.Server/Locales/en-US.json @@ -1997,7 +1997,8 @@ "IsVirtualizeTitle": "Virtualize", "IsVirtualizeIntro": "Set IsVirtualize to true enable virtual scroll for large data", "IsVirtualizeDescription": "Component virtual scrolling supports two ways of providing data through Items or OnQueryAsync callback methods", - "AttrIsVirtualize": "Wether to enable virtualize" + "AttrIsVirtualize": "Wether to enable virtualize", + "AttIsAutoClearWhenInvalid": "Whether to automatically clear invalid values when focus leaves the component" }, "BootstrapBlazor.Server.Components.Samples.AutoCompletes": { "Title": "AutoComplete", diff --git a/src/BootstrapBlazor.Server/Locales/zh-CN.json b/src/BootstrapBlazor.Server/Locales/zh-CN.json index 194965c268a..3073977a52d 100644 --- a/src/BootstrapBlazor.Server/Locales/zh-CN.json +++ b/src/BootstrapBlazor.Server/Locales/zh-CN.json @@ -1997,7 +1997,8 @@ "IsVirtualizeTitle": "虚拟滚动", "IsVirtualizeIntro": "通过设置 IsVirtualize 参数开启组件虚拟功能特性", "IsVirtualizeDescription": "组件虚拟滚动支持两种形式通过 Items 或者 OnQueryAsync 回调方法提供数据", - "AttrIsVirtualize": "是否开启虚拟滚动" + "AttrIsVirtualize": "是否开启虚拟滚动", + "AttIsAutoClearWhenInvalid":"焦点移除组件时是否自动清空无效值" }, "BootstrapBlazor.Server.Components.Samples.AutoCompletes": { "Title": "AutoComplete 自动完成", diff --git a/src/BootstrapBlazor/Components/AutoFill/AutoFill.razor.cs b/src/BootstrapBlazor/Components/AutoFill/AutoFill.razor.cs index e135d4c42bf..1e08fccfa35 100644 --- a/src/BootstrapBlazor/Components/AutoFill/AutoFill.razor.cs +++ b/src/BootstrapBlazor/Components/AutoFill/AutoFill.razor.cs @@ -177,6 +177,7 @@ protected override void OnParametersSet() _displayText = GetDisplayText(Value); _clientValue = _displayText; + InvokeVoidAsync("setValue", Id, _displayText); Items ??= []; } From 0e018f5b9ff8a01095c86708b06911b5a3870857 Mon Sep 17 00:00:00 2001 From: braia123 Date: Mon, 3 Nov 2025 20:07:44 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E7=94=A8=E6=8C=89?= =?UTF-8?q?=E9=92=AE=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/BootstrapBlazor.Server/Components/Samples/AutoFills.razor | 1 - 1 file changed, 1 deletion(-) diff --git a/src/BootstrapBlazor.Server/Components/Samples/AutoFills.razor b/src/BootstrapBlazor.Server/Components/Samples/AutoFills.razor index 41fa4d7209f..a7f8094fd17 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/AutoFills.razor +++ b/src/BootstrapBlazor.Server/Components/Samples/AutoFills.razor @@ -9,7 +9,6 @@
@((MarkupString)@Localizer["NormalDesc"].Value)
- From e845e9a5b2fd2d9670609a7cfaefb250644e1b44 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Tue, 4 Nov 2025 08:43:51 +0800 Subject: [PATCH 3/3] =?UTF-8?q?refactor:=20=E9=87=8D=E6=9E=84=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/AutoFill/AutoFill.razor.cs | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/src/BootstrapBlazor/Components/AutoFill/AutoFill.razor.cs b/src/BootstrapBlazor/Components/AutoFill/AutoFill.razor.cs index 1e08fccfa35..466bbb9059a 100644 --- a/src/BootstrapBlazor/Components/AutoFill/AutoFill.razor.cs +++ b/src/BootstrapBlazor/Components/AutoFill/AutoFill.razor.cs @@ -143,6 +143,8 @@ public partial class AutoFill [NotNull] private RenderTemplate? _dropdown = null; + private string? _lastClientValue; + /// /// Gets the component style. /// @@ -177,10 +179,33 @@ protected override void OnParametersSet() _displayText = GetDisplayText(Value); _clientValue = _displayText; - InvokeVoidAsync("setValue", Id, _displayText); Items ??= []; } + /// + /// + /// + /// + /// + protected override async Task OnAfterRenderAsync(bool firstRender) + { + await base.OnAfterRenderAsync(firstRender); + + if (firstRender) + { + _lastClientValue = _clientValue; + } + + if (_lastClientValue != _clientValue) + { + _lastClientValue = _clientValue; + _filterItems = null; + + _dropdown.Render(); + await InvokeVoidAsync("setValue", Id, _clientValue); + } + } + /// /// /// @@ -216,6 +241,7 @@ private async Task OnClickItem(TValue val) { CurrentValue = val; _displayText = GetDisplayText(val); + _clientValue = _displayText; // 使用脚本更新 input 值 await InvokeVoidAsync("setValue", Id, _displayText);