2011-02-17 41 views
0

我有10-20對象的列表每個頁面創建這些表格上:在當多種形式存在的JavaScript存儲特定值

<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塊將被換出的上述股利#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> 

不幸的是我在路過麻煩這個js變量名爲route_id的正確route_id,我期望它需要使用'this'關鍵字,但是我一直無法弄清楚具體是怎麼做到的。不勝感激。

回答

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() 
0
var route_id = $(this).attr('input[name=route_id]').val() 

應該是這樣的:

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