I have a form, which I'd like to validate, then if valid, run a JavaScript function. For this, I have:
function updateMap() {
//dummy
}
<form>
<div class="group">
<input type="number" id="hour" min="0" max="23" required>
<span class="highlight"></span>
<span class="bar"></span>
<label>Hour of the day (0-23)</label>
</div>
<div class="group">
<select class="weekselection" id="weekday" required>
<option value="" disabled selected>Choose the weekday</option>
<option value="0">Monday</option>
<option value="1">Tuesday</option>
<option value="2">Wednesday</option>
<option value="3">Thursday</option>
<option value="4">Friday</option>
<option value="5">Saturday</option>
<option value="6">Sunday</option>
</select>
</div>
<div class="group">
<select class="methodelection" id="normalization" required>
<option value="" disabled selected>Choose data handling</option>
<option value="0">Normalized data</option>
<option value="1">Unnormalized data</option>
<option hidden value="2">Normalization not needed in baseline</option>
</select>
</div>
<div class="group">
<select class="methodelection" id="method" onchange="setNormSelection()">
<option value="" disabled selected>Choose the method</option>
<option value="0">Baseline (daily/hourly mean)</option>
<option value="1">SGD Regressor</option>
<option value="2">Decision Tree</option>
<option value="3">Neural Network - Multi-Layer Perceptron</option>
</select>
</div>
<button type=button onClick="updateMap()">Show prediction!</button>
</form>
This works, however I'd like to actually check the validity of the fields. If in this code I'm sweitching to <button type=submit onSubmit="updateMap()">Show prediction!</button>
, the validation works fine, but if the fields are filled, the updateMap()
function doesn't get called, the page just flashes as if it's updated itself to default. What am I missing?