on first submission, no option in <select> selected, causing html5 validation fail, preventing submission altogether.
however, if select option via javascript, submission still fails on subsequent submission.
it succeeds if manually select option other ones selected (or if deselect , reselect them).
bug or feature? known behavior or documented somewhere? couldn't find references.
var done = false; $(document).ready(function() { $("#s").on("click", function() { if (done) { return; } // run once done = true; settimeout(function() { $("#a").prop("selected", true); console.log($("#x").val()); }, 100); // delay prevent submission set option }); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <form method="get"> <select id="x" name="x" required="required" multiple="multiple"> <option value="a" id="a">anton</option> <option value="b">berta</option> </select> <input id="s" type="submit" name="btn" value="submit" /> </form>
it seems has setting .prop
on <option>
.
when set selectedindex
on select
input, works. check updated fiddle:
document.getelementbyid('btn-select').addeventlistener('click', function() { var select = $("#x")[0]; // select first 1 // select.selectedindex = 0; // or loop through options , select based on condition (var = 0; < select.options.length; i++) { if (select.options[i].value === 'b') { select.selectedindex = i; return; } } })
https://jsfiddle.net/5hbey7en/8/
so example become:
var done = false; $(document).ready(function() { $("#s").on("click", function() { if (done) { return; } // run once done = true; settimeout(function() { $("#x")[0].selectedindex = 0; console.log($("#x").val()); }, 100); // delay prevent submission set option }); });
Comments
Post a Comment