当存在多个窗体时,在javascript中存储特定值

2024-04-19 20:53:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我在每一页上都有一个10-20个对象的列表,创建这些表单:

<div id="routeTable">
  {% for route in route_list %}
  <div id="routeDone">
    <form class="doneForm" action="/route/complete/" method="post">
      <input type="hidden" name="route_id" value="{{ route.route_id }}" />
      <input type="hidden" name="next" value="{{ request.get_full_path }}" />
      <input type="submit" value="Done" class="doneButton" />
    </form>
  </div>
  {% endfor %}
</div>

我正在尝试向页面中添加一些jquery,以便截获通常的表单提交,而不是使用ajax,如下所示。(我已经有了一个返回html块的视图,它将被替换为上面的div#routeTable。问题是第4行“var route\u ID…”:

<script>
$(document).ready(function() {
  $(".doneForm").submit(function() {
    var route_id = $(this).attr('input[name=route_id]').val()

    $.ajax({
      type: "post",
      url: "/route/complete/",
      data: route_id,
      success: function(data) {
        $("#routeTable").html(data);
      }
    });
  return false;
  });
});
</script>

不幸的是,我在将正确的route\u id传递到名为route\u id的js变量时遇到问题。我希望它需要使用'this'关键字,但我还没有弄清楚确切的方法。你知道吗

任何关于如何修复我的javascript的建议都将不胜感激。你知道吗


Tags: namedivformid表单inputdatavalue
2条回答
var route_id = $(this).attr('input[name=route_id]').val()

应该是这样的:

var route_id = $(this).find('input[name=route_id]').val()

试着改变

var route_id = $(this).attr('input[name=route_id]').val()

var route_id = $(this).find('input[name=route_id]').val()

原因是input[name=route_id]不是属性,而是表示标记input和该标记[name=route_id]上的属性的选择器。你知道吗

你也可以这样做

var route_id = $('input[name=route_id]',this).val()

相关问题 更多 >