diff --git a/packages/uni-components/src/components/input/index.tsx b/packages/uni-components/src/components/input/index.tsx index 46f540a41ae48f9d4e094c027879d9c0f4a2cd28..f3b6a82dd2d5c70d6bc82e2a3279ca189e656133 100644 --- a/packages/uni-components/src/components/input/index.tsx +++ b/packages/uni-components/src/components/input/index.tsx @@ -116,10 +116,12 @@ export default /*#__PURE__*/ defineBuiltInComponent({ if ((event as KeyboardEvent).key !== 'Enter') { return } + const input = event.target as HTMLInputElement event.stopPropagation() trigger('confirm', event, { - value: (event.target as HTMLInputElement).value, + value: input.value, }) + !props.confirmHold && input.blur() } return () => { let inputNode = diff --git a/packages/uni-components/src/components/textarea/index.tsx b/packages/uni-components/src/components/textarea/index.tsx index e2abcbf0810e3ee2a4f11b185c941c81cd9e5c70..a7edf0f9578e0712681dc8f26dd9338976b9e023 100644 --- a/packages/uni-components/src/components/textarea/index.tsx +++ b/packages/uni-components/src/components/textarea/index.tsx @@ -97,7 +97,7 @@ export default /*#__PURE__*/ defineBuiltInComponent({ if (isDone.value) { confirm(event) const textarea = event.target as HTMLTextAreaElement - textarea.blur() + !props.confirmHold && textarea.blur() } } diff --git a/packages/uni-components/src/helpers/useField.ts b/packages/uni-components/src/helpers/useField.ts index 1d5b218dd3b4e3efeedb6bcb279c6a269025a8c1..9f4638a9168421fee9932f97cefa24bdec0f40c3 100644 --- a/packages/uni-components/src/helpers/useField.ts +++ b/packages/uni-components/src/helpers/useField.ts @@ -132,6 +132,10 @@ export const props = /*#__PURE__*/ extend( type: String, default: 'done', }, + confirmHold: { + type: Boolean, + default: false, + }, }, keyboardProps )