如何在elm中的文本/输入框中自动选择/突出显示文本

时间:2017-08-03 11:56:46

标签: elm

榆树中有没有办法像j document.getElementById("test").select()那样做同样的事情?

我有一个输入字段,当您在StackOverflow上单击此处的共享时,我希望以与突出显示的共享URL非常相似的方式操作:enter image description here

当您需要点击元素以突出显示它时,即使是在github上也是如此:enter image description here

我知道如何使用端口(eg.)执行此操作。 但我更愿意直接在榆树这样做。这可能吗?在未来的Elm版本中是否可能?

由于

2 个答案:

答案 0 :(得分:3)

目前在elm-lang/dom有一些包含类似功能的软件包,但它们依赖于本机Javascript调用。 See the focus example here

Elm code

function focus(id)
{
    return withNode(id, function(node) {
        node.focus();
        return _elm_lang$core$Native_Utils.Tuple0;
    });
}

和原生代码......

{{1}}

如果你想构建一个不使用ports的本地软件包,你当前必须构建一个本地软件包,它可以工作,但将来可能不会向后兼容,你将无法公开列出包裹。

我建议使用端口。

答案 1 :(得分:1)

在Elm 0.19中,Browser.Dom有一个focus任务,它将以给定id集中DOM元素。这会将光标置于元素中(如果它是可编辑的),但不会选择文本(即突出显示文本)。为此,您将需要JavaScript select()。据我所知,榆木对此没有约束力,但这只能是一个疏忽。添加起来非常容易-几乎与焦点完全相同。

现在,如果要选择文本,则端口是唯一的选择。