我有一个带有滑块的表单,有人可以用它对图片进行评级。表单应该在拖动滑块时提交,所以“onmouspup”。这很管用。但是,应该刷新页面,以便用户所做的评级已经提交。所有这些都发生在索引页上,这样用户滚动到的位置就不会丢失。我试着这样制作滑块:
<%= f.range_field :score, class:"form-control-range slider", id:"formControlRange", onMouseUp:"submit(); reload(); " %>
...
<script>
function reload() {
console.log("hi");
location.reload;
}
</script>
通过这种方式,我希望当onMouseUp事件发生时,页面首先被提交,然后重新加载,从而显示用户所做的评级。如果我的滑块没有“reload()”功能,那么表单是提交的,但是我必须手动重新加载,这样更改才能显示出来。不知何故,像这样调用滑块并不能同时实现两个功能。只执行首先调用的函数。我在其他线程中看到过类似
您键入了。
请张贴
function reload() {
console.log("hi");
location.reload();
}
但这本身不会修复问题,因为您正在执行提交,然后重新加载。如果重新加载比提交时执行的操作更快怎么办?然后重新加载您的旧状态。提交操作失败怎么办?
如果我们假设您保持当前的方法,那么您需要在重新加载(或重新注册)之前以某种方式进行提交和同步。如果有错误,则显示错误。
您可以使用Ajax来实现这一点。或者,如果您更喜欢post和SUMMIT,那么您的服务器可以重新发送输出作为对post的响应,浏览器可以很好地处理这一点。
我个人更喜欢做一个AJAX请求,处理响应并刷新UI中要更改的部分。