我有一个非常烦人的问题,因为几天的尝试和googlin'我无法解决。周围。
我的表单中有一些标签。
当我进入第三个标签(3/3)并点击提交以更新我的表单时,我总是进入第一个标签。我想留在活动标签页。
这是我的jQuery
$(document).ready(function () { /***** intra - Tabs *****/ $('.intra-tab-content').hide(); $('.intra-tab-content:first').show(); $('.intra-tab').click(function () { var tabContentId = '#' + $(this).attr('name'); $('.intra-tab').attr('class', 'intra-tab'); $(this).attr('class', 'intra-tab intra-tab-bar-actual-tab'); $('.intra-tab-content').hide(); $(tabContentId).show(); }); });
这是我的HTML
<div class="intra-tab-bar">
<ul>
<li><a href="#" name="tab0" class="intra-tab intra-tab-bar-actual-tab">foo</a>
</li>
<li><a href="#" name="tab1" class="intra-tab intra-tab-bar-actual-tab">bar</a>
</li>
<li><a href="#" name="tab2" class="intra-tab intra-tab-bar-actual-tab">foobar</a>
</li>
</ul>
如果有人可以帮助我会很棒。
提前谢谢你
Krtl
答案 0 :(得分:1)
点击提交后,页面的默认行为是重新加载,从而导致页面进入初始状态(选项卡1)。
所以有两个机会:
您可以将选定的标签保存在服务器上(例如在会话中)并将其加载到jQuery的预备回拨中
不要让您的网页使用默认行为,而是调用自定义提交回调函数并停止传播:
$("#submit-form").submit(function () {
var formData = $(this).serialize(); //jQuery function to get the forms values
$.ajax({
url: "url", //forms url
type: "POST/PUT/GET/DELETE", //default: get
data: formData,
success: function(data) {
//success callback
}
});
return false; //stops propagation
});
答案 1 :(得分:0)
有很多方法可以解决这个问题。 Florian已经建议了最优雅的方式,而不是使用浏览器提交功能,使用ajax定义您自己的提交行为,以防止页面加载。
可替换地:
虽然这个答案仅适用于解决问题的更多方法。对于一些有用的东西,去找ajax!