这个有点棘手。
这是我的jQuery代码:
如何操作:用户在输入字段中输入值,失去焦点后,我向API发出AJAX调用,将值保存在数据库中。这一切都能正常工作。
然而,有一个问题。如果用户点击提交按钮,则获取没有时间运行。这是有道理的。
但我需要提交等待值更新。我考虑做一些事情,例如在提交按钮上添加preventDefault,然后在保存后删除preventDefault。
但我不知道如何做到这一点,也不知道这是否是一个好主意,甚至是否有任何意义。
因此,总结一下:我需要表单提交等待AJAX调用完成。
这个<% smth %>只是EJS模板系统。不应影响它的工作方式。
这是我的jQuery代码:
/**
* Updating websites
*/
$('.website').on('blur', function () {
var websiteId = this.id;
console.log(websiteId);
var website = this.value;
console.log(website);
fetch(`/api/edit/${websiteId}&${website}`).then(() => {
});
})
这是我的HTML代码
<form method="post">
<% for(let i = 0; i < websites.length; i++){ let website = websites[i]; %>
<fieldset id="site<%= i %>">
<p style="color: <% if(errorMsgs[i] === 'Wrong website address'){ %> red;<% } else { %> green;<% } %>
padding-bottom: 0;
padding-top: 10px;
margin-bottom: 0;"
class="">
<%= errorMsgs[i] %>
</p>
<div class="">
<input class="website"
name="website<%= i %>"
id="<%= i %>"
value="<%= website %>"
type="text"/>
<a href="/websites/edit/<%= i %>"
class="btn btn-info hide">
Edit
</a>
<a href="/websites/delete/<%= i %>"
data-id="<%= i %>"
class="btn btn-danger confirmation removeBtn">
Remove
</a>
</div>
</fieldset>
<% } %>
<button type="submit"
class="btn btn-primary col-sm-offset-2"
value="Generate a report"
name="generateReport"
data-toggle="modal"
data-target="#exampleModal">
Generate a report
</button>
<!-- Save button created using Javascript. In case JS is disabled -->
</form>
这是我的API
// GET: api/edit/_id - save updates
router.get('/edit/:_id&:url', (req, res, next) => {
Account.findById(req.user._id, (err, acc) => {
if (err) {
console.log(err);
} else {
acc.websites.set(req.params._id, req.params.url);
acc.save((err, webs) => {
if (err) {
console.log(err);
} else {
console.log('all good');
// res.redirect('/reports');
res.json(webs);
}
});
}
});
});
如何操作:用户在输入字段中输入值,失去焦点后,我向API发出AJAX调用,将值保存在数据库中。这一切都能正常工作。
然而,有一个问题。如果用户点击提交按钮,则获取没有时间运行。这是有道理的。
但我需要提交等待值更新。我考虑做一些事情,例如在提交按钮上添加preventDefault,然后在保存后删除preventDefault。
但我不知道如何做到这一点,也不知道这是否是一个好主意,甚至是否有任何意义。
因此,总结一下:我需要表单提交等待AJAX调用完成。
这个<% smth %>只是EJS模板系统。不应影响它的工作方式。