提问者:小点点

在我的表单按钮上调用submit()和reload()不起作用


我有一个带有滑块的表单,有人可以用它对图片进行评级。表单应该在拖动滑块时提交,所以“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()”功能,那么表单是提交的,但是我必须手动重新加载,这样更改才能显示出来。不知何故,像这样调用滑块并不能同时实现两个功能。只执行首先调用的函数。我在其他线程中看到过类似这样的滑块,但这对我也不起作用。你有办法让这一切顺利吗?或者你是否知道如何更好地重新加载。非常感谢你的帮助!文森特


共2个答案

匿名用户

您键入了,缺少要调用方法的

请张贴函数的代码。

匿名用户

是一个函数,您需要将其作为函数调用:

  function reload() {
    console.log("hi");
    location.reload();
  }

但这本身不会修复问题,因为您正在执行提交,然后重新加载。如果重新加载比提交时执行的操作更快怎么办?然后重新加载您的旧状态。提交操作失败怎么办?

如果我们假设您保持当前的方法,那么您需要在重新加载(或重新注册)之前以某种方式进行提交和同步。如果有错误,则显示错误。

您可以使用Ajax来实现这一点。或者,如果您更喜欢post和SUMMIT,那么您的服务器可以重新发送输出作为对post的响应,浏览器可以很好地处理这一点。

我个人更喜欢做一个AJAX请求,处理响应并刷新UI中要更改的部分。