【问题标题】:Focus toggling on click in Svelte Component在 Svelte 组件中单击焦点切换
【发布时间】:2019-04-14 15:48:26
【问题描述】:

我制作了一个用于输入财务数字的组件,用于我的输入表单。它现在真的很好用,除了一个奇怪的行为:当我点击输入字段时,它会按预期获得焦点,但是当它已经有焦点时点击它会带走焦点。

组件中只有一个 on:click 处理程序,当我删除它时,行为没有改变。所以,我不知道是什么导致了这种奇怪。

<p>Input with precision=2 <Money id=first bind:value=a precision=2/>
    <br/>Value={a}</p>
<hr/>
<p>Input with no precision specified <Money ref:m2 bind:value=b/><br/>
    Value={b}</p>


<script>

    export default {
        data(){return {
            a:1234.34,
            b:3.14159265
        }},

        components: {
            Money : "./Money.html"
        }
  }
</script>

<style>
    /* How to sytle the component*/
    :global(#first) {
        font-family:serif;
        lobal(#first) {
        font-family:serif;
        background:#ff9;
    }
</style>

这是显示问题的 REPL。

https://svelte.technology/repl?version=2.15.3&gist=27f91d57e7a9267fe7d7d36aad850c7e

【问题讨论】:

    标签: svelte svelte-component


    【解决方案1】:

    这是因为div.focused:before {...} CSS 在输入前创建了一个伪元素。您可以添加 pointer-events: none 以防止这种情况发生 — example here

    (感谢我们 Discord chatroom 中的 njb 解决了这个问题 - 我们有一个支持渠道,也非常欢迎您提出此类问题!)

    【讨论】:

    • 哇!我永远不会想出这个!非常感谢 njbotkin 和您的解决方案。我添加了额外的 CSS 规则,它运行良好。顺便说一句,Svelte 超级棒!!感谢您创建它!我最近才发现它,它使构建应用程序变得更加容易和快捷!我以后会更多地使用聊天。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    • 2019-09-02
    • 1970-01-01
    相关资源
    最近更新 更多