Reputation:
I'm trying to validate a question with checkboxes using Svelte but I'm having trouble with allowing the user to be able to select multiple colors and saving what they selected in local storage.
This is the validation I would like to preform:
Ex:
localstorage.setItem("colors", *color string here*);
localstorage.setItem("toys", *toys string here*);
Here is my code:
All code is in App.svelte file
In script tags:
let blue = false;
let red = false;
let green = false;
let purple = false;
{#if blue== "" | red== "" | green == "" | purple == ""}
<p> please pick a color</p>
{:else}
string r = blue.checked + red.checked + green.checked + purple.checked;
document.localStoragesetItem("colors",r);
{/if}
HTML
<div id="container">
<label>Select the colors you like:</label><br>
<input type="checkbox" id="color" name="color" value="blue" bind:checked={blue}>
<label>Blue</label><br>
<input type="checkbox" id="color" name="color" value="red" bind:checked={red}>
<label>Red</label><br>
<input type="checkbox" id="color" name="color" value="green" bind:checked={green}>
<label>Green</label><br>
<input type="checkbox" id="color" name="color" value="purple" bind:checked={purple}>
<label>Purple</label><br><br>
</div>
Upvotes: 0
Views: 662
Reputation: 3190
You can't use localstorage in a REPL so I've commented it out but, your solution would be:
<script>
const colours = {
blue: false,
red: false,
green: false,
purple: false
}
$: {
console.log({ colours })
// localStorage.set({ colours })
}
</script>
{#if !Object.keys(colours).filter(c => !!colours[c]).length}
<p>please pick a color</p>
{:else}
{JSON.stringify(colours)}
{/if}
<div id="container">
<label>Select the colors you like:</label><br>
<input type="checkbox" bind:checked={colours.blue}>
<label>Blue</label><br>
<input type="checkbox" bind:checked={colours.red}>
<label>Red</label><br>
<input type="checkbox" bind:checked={colours.green}>
<label>Green</label><br>
<input type="checkbox" bind:checked={colours.purple}>
<label>Purple</label><br><br>
</div>
I've put it in the REPL so you can try here
You needed to:
id
attribute in HTML (you don't need it anyway)name
attributeUpvotes: 1