当存在多个表单时,在javascript中存储特定值

时间:2011-02-17 20:14:51

标签: javascript python html django

我在每个页面上都有一个包含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_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_id传递给名为route_id的js变量。我希望它需要使用'this'关键字,但我还没弄清楚究竟是怎么做的。

有关如何修复我的javascript的任何建议都将非常感谢。

2 个答案:

答案 0 :(得分:1)

尝试更改

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()

答案 1 :(得分:0)

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

应该是这样的:

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