Переключение фокуса на клик в Svelte Component

Я сделал компонент для ввода финансовых показателей, который будет использоваться в моих формах ввода. Теперь он работает очень хорошо, за исключением одного странного поведения: когда я щелкаю по полю ввода, оно получает фокус, как и ожидалось, однако, если щелкнуть по нему, когда оно уже имеет фокус, это убирает фокус.

Есть только один: обработчик щелчка в компоненте, и когда я его удалил, поведение не изменилось. Итак, я не знаю, что вызывает эту странность.

<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>

Вот ответ, который показывает проблему.

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

1 ответ

Решение

Это происходит потому, что div.focused:before {...} CSS создает псевдоэлемент перед входом. Можете добавить pointer-events: none чтобы этого не случилось - пример здесь.

(Благодарим njb в нашем чате Discord, чтобы выяснить это - у нас есть канал поддержки, к которому вы также можете обратиться с такими вопросами!)

Другие вопросы по тегам