我得到了这段代码,以创建带有一系列选项的动态选择。在下拉列表中,第一个值是选定的值,如果我运行表单,我可以看到一个值已发送到服务器。
<script>
$(document).ready(function() {
fetch('http://127.0.0.1:35980/returnBalancesDates')
.then(dataWrappedByPromise => dataWrappedByPromise.text())
.then(data => {
var choices = data.split(' ');
choices.unshift("Inserted values");
var x = document.createElement("SELECT");
x.setAttribute("id", "mySelect2");
x.setAttribute("name", "newbaldate");
x.setAttribute("class", "purec");
document.body.appendChild(x);
for (i = 0; i < choices.length; i = i + 1) {
var z = document.createElement("option");
z.setAttribute("value", choices[i]);
var t = document.createTextNode(choices[i]);
z.appendChild(t);
document.getElementById("mySelect2").appendChild(z);
}
$(x).appendTo('#selectNewBalance');
});
});
</script>
然后我尝试应用一个条件,如果在使用上述脚本创建的下拉列表中选择了默认条件“插入值”:
<script>
var select = document.getElementById("selectNewBalance");
// add an event listener to the element
select.addEventListener('change', function(e) {
if (e.target.value === 'Inserted values') {
var checkThisOnes = ["Value1", "Value2", "Value3"];
var printThisOnes = []
var message = "Please fill these fields: "
$('#myform').submit(function() {
var result=true;
for (i = 0; i < checkThisOnes.length; i = i + 1) {
var checkedValue = $('#'+checkThisOnes[i]).val();
if (checkedValue === undefined || checkedValue === "") {
message = message + checkThisOnes[i]+ ", ";
result =false;
}
}
if (result === false) {
alert(message)
location.reload();}
return result;
});}})
</script>
但是似乎出现了这种情况:如果我不希望触摸下拉菜单,e.target.value ===不会触发“插入值”。相反,如果我更改值,然后返回到“插入的值”,则会应用该值。有谁知道如何解决这一问题?