问题是当我尝试重新提交表单而不刷新页面时,表单提交的事件处理程序会保留上次提交的值。
该表单包含一个选择元素,该元素填充了来自 API 的选项。所选选项用于发出请求 URL 并从 API 获取数据。当表单第二次提交而不刷新表单时。提交事件处理程序用先前的值构造一个 URL,然后用新选择的值构造一个 URL。我试图在表单上重置,它将选择元素重置为其初始状态,但它没有从提交事件处理程序中清除先前选择的值。
<form id="myform">
<label for="input">Select dog breed!<label>
<select class="breeds"></select>
<input type="submit" value="Enter">
</form>
let $select = $(".breeds");
$select.append($(`<option>select breed</option>`))
for (var i=0; i<=breeds.length; i++){
$select.append($(`<option></option>`).text(breeds[i]).html(breeds[i]))
}
$('.breeds').on('change', function(){
console.log('on change running')
let breed = $(".breeds :selected").text()
console.log(`breed in on change: ${breed}`)
watchForm(breed)
})
function watchForm(breed) {
console.log(`watchForm running`)
console.log(`breed in watchform is: ${breed}`) //here breed logs as the value for first submission and then the second submission
$('form').submit(event => {
console.log(`breed in form submit is ${breed}`)
event.preventDefault();
//console.log(`num is ${num}`)
getDogImage(breed);
$('#myform').get(0).reset()
});
}