i tried all know options from stackoverflow, still getting the value as "--select---" the default / first option in the select box. my task is to get the selected option's text should be in the alert message. but it prints always , the first option' text,
here is my code :
<div class="form-group col-md-2">
<label>Select DB Table to sync</label>
<select name="dbTable" id="dbTable">
<option value="100">--Select--</option>
<option value="1001">TB_PAY_STATUSCODE_PRIORITY</option>
<option value="1002">TB_PAYEE_ACCT_EXTRACT</option>
<option value="1003">TB_PGP_PUBLICKEY</option>
<option value="1005">TB_PAYMENT_STAGE2_CONFIG</option>
<option value="1004">TB_PAYMENT_CONFIG</option>
<option value="1000">Not Picked</option>
</select>
</div>
<div class="form-group col-md-2">
<input type="submit" value="DB Update" id="submit" onclick="testme();" style="margin-top: 13%;" />
</div>
</form>
<script type="text/javascript">
var sel = document.getElementById('dbTable');
var text = sel.options[sel.selectedIndex].text;
var text1 = $("#dbTable :selected").text();
var button = document.getElementById('submit');
button.addEventListener('click', function(e) {
//sel.options[1].selected = true;
if ("createEvent" in document) {
var evt = document.createEvent("HTMLEvents");
evt.initEvent("change", false, true);
sel.dispatchEvent(evt);
} else {
sel.fireEvent("onchange");
}
//sel.dispatchEvent(new CustomEvent('change')
});
sel.addEventListener('change', function(e) {
alert(text + text1);
});
$(document).on('submit', 'form', function testme() {
var sel1 = document.getElementById('dbTable');
var text = sel1.options[sel.selectedIndex].text;
var dbTable = data;
alert("inside testme()" + sel1 + text);
$.ajax({
type: 'get',
url: "/SyncPage",
data: JSON.stringify(dbTable),
contentType: "application/json",
success: function(data) {
$('#cover-spin').hide();
console.log(data);
console.log("Data sync Loading...");
},
error: function(e) {
console.log("ERROR: ", e);
e.preventDefault();
},
});
console.log(dbTable);
alert(dbTable);
});
</script>
And the alert i am getting is as follows
You need to change the 'change' event listener to:
sel.addEventListener('change', function(e) {
// get event target's value
alert(e.target.value + ' - ' + e.target.selectedOptions[0].text);
});
This is the Javascript version, alternatively with JQuery you can use change
$('#dbTable').change(function() {
alert($(this).val() + ' - ' + $(this).find("option:selected").text());
});
var sel = document.getElementById('dbTable');
var text = sel.options[sel.selectedIndex].text;
var text1 = $("#dbTable :selected").text();
var button = document.getElementById('submit');
button.addEventListener('click', function(e) {
//sel.options[1].selected = true;
if ("createEvent" in document) {
var evt = document.createEvent("HTMLEvents");
evt.initEvent("change", false, true);
sel.dispatchEvent(evt);
} else {
sel.fireEvent("onchange");
}
//sel.dispatchEvent(new CustomEvent('change')
});
sel.addEventListener('change', function(e) {
// get event target's value
alert(e.target.value + ' - ' + e.target.selectedOptions[0].text);
});
$(document).on('submit', 'form', function testme() {
var sel1 = document.getElementById('dbTable');
var text = sel1.options[sel.selectedIndex].text;
var dbTable = data;
alert("inside testme()" + sel1 + text);
$.ajax({
type: 'get',
url: "/SyncPage",
data: JSON.stringify(dbTable),
contentType: "application/json",
success: function(data) {
$('#cover-spin').hide();
console.log(data);
console.log("Data sync Loading...");
},
error: function(e) {
console.log("ERROR: ", e);
e.preventDefault();
},
});
console.log(dbTable);
alert(dbTable);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="form-group col-md-2">
<label>Select DB Table to sync</label>
<select name="dbTable" id="dbTable">
<option value="100">--Select--</option>
<option value="1001">TB_PAY_STATUSCODE_PRIORITY</option>
<option value="1002">TB_PAYEE_ACCT_EXTRACT</option>
<option value="1003">TB_PGP_PUBLICKEY</option>
<option value="1005">TB_PAYMENT_STAGE2_CONFIG</option>
<option value="1004">TB_PAYMENT_CONFIG</option>
<option value="1000">Not Picked</option>
</select>
</div>
<div class="form-group col-md-2">
<input type="submit" value="DB Update" id="submit" onclick="testme();" style="margin-top: 13%;" />
</div>
</form>