【问题标题】:Store specific value in javascript when multiple forms are present存在多个表单时在 javascript 中存储特定值
【发布时间】:2011-02-17 20:14:51
【问题描述】:

我在创建这些表单的每个页面上都有一个包含 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 的建议将不胜感激。

【问题讨论】:

    标签: javascript python html django


    【解决方案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()
    

    【讨论】:

      【解决方案2】:
      var route_id = $(this).attr('input[name=route_id]').val()
      

      应该是这样的:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-19
        • 2015-02-12
        • 1970-01-01
        • 2023-03-13
        • 2013-08-01
        • 2021-05-20
        相关资源
        最近更新 更多