From e358f2af7d977f33273d0a96afd4903552223ff9 Mon Sep 17 00:00:00 2001 From: xfy Date: Tue, 26 May 2026 23:45:24 +0800 Subject: [PATCH] =?UTF-8?q?=E7=99=BB=E5=BD=95=E9=A1=B5=E9=9D=A2=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=9B=9E=E8=BD=A6=E9=94=AE=E6=8F=90=E4=BA=A4=E8=A1=A8?= =?UTF-8?q?=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将 on_submit 改为 Callback::new,在用户名和密码输入框上监听 onkeydown 事件,按下 Enter 键时触发登录提交。 Co-Authored-By: Claude Opus 4.7 (1M context) --- src/pages/login.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/pages/login.rs b/src/pages/login.rs index d47063b..a494f8e 100644 --- a/src/pages/login.rs +++ b/src/pages/login.rs @@ -11,7 +11,7 @@ pub fn LoginPage() -> Element { let mut password = use_signal(|| "".to_string()); let mut error = use_signal(|| None::); - let on_submit = move |_| { + let on_submit = Callback::new(move |_| { error.set(None); let username_val = username(); @@ -60,7 +60,7 @@ pub fn LoginPage() -> Element { } } }); - }; + }); rsx! { div { class: "min-h-screen flex items-center justify-center bg-white dark:bg-[#1d1e20]", @@ -86,6 +86,7 @@ pub fn LoginPage() -> Element { placeholder: "用户名或邮箱", value: username(), oninput: move |e| username.set(e.value()), + onkeydown: move |e| if e.key() == Key::Enter { on_submit(()) }, } } div { @@ -98,11 +99,12 @@ pub fn LoginPage() -> Element { placeholder: "密码", value: password(), oninput: move |e| password.set(e.value()), + onkeydown: move |e| if e.key() == Key::Enter { on_submit(()) }, } } button { class: "w-full py-2 px-4 bg-gray-900 dark:bg-[#dadadb] text-white dark:text-gray-900 font-medium rounded-full hover:opacity-80 transition-opacity", - onclick: on_submit, + onclick: move |_| on_submit(()), "登录" } a {