我目前正在使用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