我目前正在使用jQuery UI选项卡以及ajax。我共有3个标签,只能通过“下一步”&“上一个”按钮进行导航。我已经设置了参数:在tab1中,如果您离开输入字段car_name
,您将收到一条警报消息和类似的参数与tab2。jQuery UI选项卡 - 将参数设置为NEXT/PREVIOUS按钮点击
我的预期设置:如果参数未满足,则用户无法前进到下一个选项卡。但是,该部分不起作用。用户得到一个警告:他们可以忽略,然后再次点击下一步,然后前进到下一个选项卡。如何在参数(填写输入字段)完成之前禁用“下一步”按钮? EXAMPLE
谢谢
JS
<script>
$(function() {
var $tabs = $('#tabs').tabs({
disabled: [0, 1, 2],
select: function() {
$.ajax({
type: "POST",
url: "post_tabs.php",
data: {
"name": $("#car_name").val(),
"title": $("#title").val(),
"price": $("#price").val()
},
success: function (result) {
$("#tab-3").html(result);
}
});
}
});
$(".ui-tabs-panel").each(function (i) {
var totalSize = $(".ui-tabs-panel").size() - 1;
if (i != totalSize) {
next = i + 2;
$(this).append("<a href='#' class='next-tab mover' rel='" + next + "'>Next Page »</a>");
}
if (i != 0) {
prev = i;
$(this).append("<a href='#' class='prev-tab mover' rel='" + prev + "'>« Prev Page</a>");
}
});
$('.next-tab, .prev-tab').click(function() {
var prev = $(this).hasClass('prev-tab');
var currentTab = $('#tabs').tabs('option', 'selected');
if (
prev || /*(A)*/ (
currentTab == 0 && /*(B)*/
$.trim($('#car_name').val()).length > 0
) || (
currentTab == 1 && /*(C)*/
$.trim($('#title').val()).length > 0 && $.trim($('#price').val()).length > 0)
) {
var tabIndex = $(this).attr("rel");
$tabs.tabs('enable', tabIndex).tabs('select', tabIndex).tabs("option", "disabled", [0, 1, 2, 3, 4]);
} else if (!prev) {
switch (currentTab) {
case 0:
alert('Please choose an option.', 'Alert Dialog');
break;
case 1:
alert('Please fill out all the required fields.', 'Alert Dialog');
break;
}
}
return false;
});
$('.next-tab, .prev-tab').click(function() {
var tabIndex = $(this).attr("rel");
$tabs.tabs('enable', tabIndex).tabs('select', tabIndex).tabs("option", "disabled", [0, 1, 2, 3, 4]);
return false;
});
});
</script>
HTML
<div id="tab-1" class="ui-tabs-panel ui-tabs-hide">
<label for="car_name">Car Model</label>
<input type="text" id="car_name" class="detail" name="car_name" value="" /> <br>
</div>
<div id="tab-2" class="ui-tabs-panel ui-tabs-hide">
<label for="title">Title</label>
<input type="text" id="title" name="title" size="60" autocomplete="off" value=""/><br>
<label for="price">Price</label>
<input type="text" id="price" name="price" size="60" autocomplete="off" value=""/><br>
</div>
<div id="tab-3" class="ui-tabs-panel ui-tabs-hide">
</div>
谢谢!我曾两次陷入“下一个”和“前一个”。接得好! – CodingWonders90 2012-08-10 22:23:45
我添加了一些关于如何使代码更易于读取/维护的反馈。为了您的快乐。 – 2012-08-10 22:25:38
非常好!这是一种更好的方法。伟大的工作我的朋友! – CodingWonders90 2012-08-10 22:49:26