diff --git a/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor b/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor
index 11ded062a34..b0c50b3674f 100644
--- a/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor
+++ b/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor
@@ -12,7 +12,6 @@
data-bb-auto-dropdown-focus="@ShowDropdownListOnFocusString" data-bb-debounce="@DurationString"
data-bb-skip-esc="@SkipEscString" data-bb-skip-enter="@SkipEnterString" data-bb-blur="@TriggerBlurString"
data-bb-scroll-behavior="@ScrollIntoViewBehaviorString" data-bb-trigger-delete="true"
- @bind="@CurrentValueAsString"
placeholder="@PlaceHolder" disabled="@Disabled" @ref="FocusElement"/>
diff --git a/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.cs b/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.cs
index 1a671a8d13f..f1fb45b1257 100644
--- a/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.cs
+++ b/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.cs
@@ -119,6 +119,12 @@ protected override void OnParametersSet()
LoadingIcon ??= IconTheme.GetIconByKey(ComponentIcons.LoadingIcon);
}
+ ///
+ ///
+ ///
+ ///
+ protected override Task InvokeInitAsync() => InvokeVoidAsync("init", Id, Interop, Value);
+
///
/// Callback method when a candidate item is clicked
///
@@ -137,6 +143,9 @@ private async Task OnClickItem(string val)
}
await TriggerFilter(val);
+
+ // 使用脚本更新 input 值
+ await InvokeVoidAsync("setValue", Id, val);
}
private List Rows => _filterItems ?? [.. Items];
diff --git a/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.js b/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.js
index 12208cc111e..98ec1d7129a 100644
--- a/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.js
+++ b/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.js
@@ -175,6 +175,14 @@ const handlerKeyup = (ac, e) => {
}
}
+export function setValue(id, value) {
+ const ac = Data.get(id)
+ const { input } = ac;
+ if (input) {
+ input.value = value;
+ }
+}
+
export function dispose(id) {
const ac = Data.get(id)
Data.remove(id)
diff --git a/src/BootstrapBlazor/Components/AutoComplete/PopoverCompleteBase.cs b/src/BootstrapBlazor/Components/AutoComplete/PopoverCompleteBase.cs
index 8d280f52c37..db2835b49cb 100644
--- a/src/BootstrapBlazor/Components/AutoComplete/PopoverCompleteBase.cs
+++ b/src/BootstrapBlazor/Components/AutoComplete/PopoverCompleteBase.cs
@@ -158,12 +158,6 @@ protected override void OnParametersSet()
Offset ??= "[0, 6]";
}
- ///
- ///
- ///
- ///
- protected override Task InvokeInitAsync() => InvokeVoidAsync("init", Id, Interop);
-
///
/// 触发 OnBlur 回调方法 由 Javascript 触发
///
diff --git a/src/BootstrapBlazor/Components/AutoFill/AutoFill.razor b/src/BootstrapBlazor/Components/AutoFill/AutoFill.razor
index eb6c2ee22eb..40e29d49717 100644
--- a/src/BootstrapBlazor/Components/AutoFill/AutoFill.razor
+++ b/src/BootstrapBlazor/Components/AutoFill/AutoFill.razor
@@ -14,7 +14,6 @@
data-bb-auto-dropdown-focus="@ShowDropdownListOnFocusString" data-bb-debounce="@DurationString"
data-bb-skip-esc="@SkipEscString" data-bb-skip-enter="@SkipEnterString"
data-bb-scroll-behavior="@ScrollIntoViewBehaviorString"
- @bind="@_displayText"
placeholder="@PlaceHolder" disabled="@Disabled" @ref="FocusElement" />
diff --git a/src/BootstrapBlazor/Components/AutoFill/AutoFill.razor.cs b/src/BootstrapBlazor/Components/AutoFill/AutoFill.razor.cs
index a9a4c43a2ec..71c8fda2eb2 100644
--- a/src/BootstrapBlazor/Components/AutoFill/AutoFill.razor.cs
+++ b/src/BootstrapBlazor/Components/AutoFill/AutoFill.razor.cs
@@ -184,6 +184,12 @@ protected override void OnParametersSet()
Items ??= [];
}
+ ///
+ ///
+ ///
+ ///
+ protected override Task InvokeInitAsync() => InvokeVoidAsync("init", Id, Interop, _displayText);
+
private bool IsNullable() => !ValueType.IsValueType || NullableUnderlyingType != null;
@@ -199,6 +205,9 @@ protected override void OnParametersSet()
///
private async Task OnClearValue()
{
+ // 使用脚本更新 input 值
+ await InvokeVoidAsync("setValue", Id, "");
+
if (OnClearAsync != null)
{
await OnClearAsync();
@@ -223,6 +232,9 @@ private async Task OnClickItem(TValue val)
CurrentValue = val;
_displayText = GetDisplayText(val);
+ // 使用脚本更新 input 值
+ await InvokeVoidAsync("setValue", Id, _displayText);
+
if (OnSelectedItemChanged != null)
{
await OnSelectedItemChanged(val);
diff --git a/src/BootstrapBlazor/Components/Search/Search.razor b/src/BootstrapBlazor/Components/Search/Search.razor
index 14a33fd7393..cae05a7c74a 100644
--- a/src/BootstrapBlazor/Components/Search/Search.razor
+++ b/src/BootstrapBlazor/Components/Search/Search.razor
@@ -29,7 +29,6 @@
data-bb-skip-esc="@SkipEscString" data-bb-skip-enter="@SkipEnterString" data-bb-blur="@TriggerBlurString"
data-bb-scroll-behavior="@ScrollIntoViewBehaviorString"
data-bb-input="@UseInputString"
- @bind="@_displayText"
placeholder="@PlaceHolder" disabled="@Disabled" @ref="FocusElement" />
@if (IsClearable)
{
diff --git a/src/BootstrapBlazor/Components/Search/Search.razor.cs b/src/BootstrapBlazor/Components/Search/Search.razor.cs
index 6c6a713af9e..1dbcd19d6af 100644
--- a/src/BootstrapBlazor/Components/Search/Search.razor.cs
+++ b/src/BootstrapBlazor/Components/Search/Search.razor.cs
@@ -209,6 +209,12 @@ protected override void OnParametersSet()
}
}
+ ///
+ ///
+ ///
+ ///
+ protected override Task InvokeInitAsync() => InvokeVoidAsync("init", Id, Interop, _displayText);
+
private string? _displayText;
private async Task OnSearchClick()
{
@@ -229,6 +235,9 @@ private async Task OnSearchClick()
private async Task OnClearClick()
{
+ // 使用脚本更新 input 值
+ await InvokeVoidAsync("setValue", Id, "");
+
_displayText = null;
if (OnClear != null)
{
@@ -252,6 +261,9 @@ private async Task OnClickItem(TValue val)
CurrentValue = val;
_displayText = GetDisplayText(val);
+ // 使用脚本更新 input 值
+ await InvokeVoidAsync("setValue", Id, _displayText);
+
if (OnSelectedItemChanged != null)
{
await OnSelectedItemChanged(val);
diff --git a/test/UnitTest/Components/AutoFillTest.cs b/test/UnitTest/Components/AutoFillTest.cs
index c5deeb2d05d..ed6f39cdc86 100644
--- a/test/UnitTest/Components/AutoFillTest.cs
+++ b/test/UnitTest/Components/AutoFillTest.cs
@@ -194,7 +194,7 @@ public void OnGetDisplayText_Ok()
pb.Add(a => a.OnGetDisplayText, foo => foo?.Name);
});
var input = cut.Find("input");
- Assert.Equal("张三 1000", input.Attributes["value"]?.Value);
+ Assert.Null(input.Attributes["value"]?.Value);
}
[Fact]