gpt4 book ai didi

purescript - 在 purescript-halogen 中创建后自动聚焦输入元素

转载 作者:行者123 更新时间:2023-12-04 00:15:41 26 4
gpt4 key购买 nike

我正在使用 purescript-halogen 构建类似电子表格的表格(类似于 Handsontable )。如果您双击一个单元格,一个 html 输入元素将呈现为相应表格单元格的子元素(并且不会为所有其他单元格呈现此类元素)。

这对卤素效果很好,除了我不知道如何自动将焦点设置到新创建的输入元素上。

我尝试了 autofocus 属性,但这只适用于双击的第一个单元格。 JavaScript 的方法是在新元素上调用 focus() 方法,但我不知道在卤素中更新 DOM 后如何调用它。有什么想法吗?

最佳答案

好的,下面是我如何使用 Phil 的 Initializer 提示完成的:

编写一个实际聚焦元素的 JavaScript 函数。

exports.setFocusImpl = function(elemId) {
return function() {
document.getElementById(elemId).focus();
};
};

FFI 它。

foreign import data FOCUS :: !

foreign import setFocusImpl :: forall e. Fn1 String (Eff (focus :: FOCUS | e) Unit)

setFocus :: forall e. String -> Eff (focus :: FOCUS | e) Unit
setFocus = runFn1 setFocusImpl

然后在初始化器中使用setFocus函数。

H.input
[ A.id_ "inputField"
, A.Initializer do
liftEff $ setFocus "inputField"
pure DoNothing
] [ ]

请注意,我使用的是旧版本的卤素,其中签名仍然是旧版本 (definition of Initializer in 30e8b2c7)。

关于purescript - 在 purescript-halogen 中创建后自动聚焦输入元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32248943/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com