Open1

SvelteKit で type="date" の input にプレースホルダテキストを表示する

Acha_for_CSAcha_for_CS

SvelteKit で type="date" の input にプレースホルダテキストを表示する

やりたいこと

クリックしていないときはこう↓

クリックするとカレンダーで日付を入力できる↓

解決方法

on:focuson:bluris_issue_date_in_focus の値を書き換えて、is_issue_date_in_focustrue なら type="date" の方を表示します。

<script lang="ts">
    let is_issue_date_in_focus = false

	function handle_focus_issue_date(): void {
		is_issue_date_in_focus = true
	}

	function handle_blur_issue_date(): void {
		is_issue_date_in_focus = false
	}
</script>

<div>
    {#if is_issue_date_in_focus}
        <input
            type="date"
            bind:value={issue_date}
            on:change={handle_change_items}
            on:blur={handle_blur_issue_date}
            name="issue_date"
        />
    {:else}
        <input
            type="text"
            bind:value={issue_date}
            on:change={handle_change_items}
            on:focus={handle_focus_issue_date}
            placeholder="納品書発行日"
            name="issue_date"
        />
    {/if}
</div>

もっとスマートな方法がありましたら、コメントにて是非教えてください。

なお、こちらの記事を参考にさせていただきました↓
https://zenn.dev/lovekumo/articles/4dea080ca61688