我正在使用仅使用上一个和下一个按钮操作的Jquery UI选项卡。在我的第一个标签中,我有选择框,为了提前你必须从选择框中选择一个选项。我关注的是在Tab#2中我有三个输入字段,我希望用户在继续之前填写。
如何禁用“下一步”按钮,以便在进入下一个选项卡之前强制用户填充输入字段? EXAMPLE
JS- NEXT / PREVIOUS
<script>
$(function() {
var $tabs = $('#tabs').tabs({
disabled: [0, 1]
});
$(".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 tabIndex = $(this).attr("rel");
if (
/*(1)*/ $('#tabs').tabs('option', 'selected') > 0 ||
/*(2)*/ ($('.update.last').length > 0 && parseInt($('.update.last').val(), 10) > 0)
) {
$tabs.tabs('enable', tabIndex)
.tabs('select', tabIndex)
.tabs("option","disabled", [0, 1]);
}
return false;
});
});
</script>
HTML
<div id="tab-2" class="ui-tabs-panel ui-tabs-hide">
<label for="title"> Title: *</label>
<input type="text" id="title" name="title" class="" size="33" autocomplete="off" value="<? $title ?>"/><br>
<label for="price"> Price: *</label>
<input type="text" name="price" class="" size="8" maxlength="9" id="price" autocomplete="off" value="<? $price ?>" /><br>
<label for="description"> Description: *</label>
<textarea id="description" name="description" class=""><? $description ?></textarea><br />
</div>
答案 0 :(得分:3)
仅更改下一个或上一页按钮上的标签,如果
以下是未经测试的扩展名:
$('.next-tab, .prev-tab').click(function() {
var tabIndex = $(this).attr("rel");
if (
$(this).hasClass('prev-tab') || /*(A)*/
(
$('#tabs').tabs('option', 'selected') == 0 && /*(B)*/
$('.update.last').length > 0 &&
parseInt($('.update.last').val(), 10) > 0
) ||
(
$('#tabs').tabs('option', 'selected') == 1 && /*(C)*/
$.trim($('#title').val()).length > 0 &&
$.trim($('#price').val()).length > 0 &&
$.trim($('#description').val()).length > 0
)
) {
$tabs.tabs('enable', tabIndex)
.tabs('select', tabIndex)
.tabs("option","disabled", [0, 1]);
}
return false;
});
=== UPDATE ===
添加了特定于标签的提醒:
$('.next-tab, .prev-tab').click(function() {
var prev = $(this).hasClass('prev-tab');
var currentTab = $('#tabs').tabs('option', 'selected');
if (
prev || /*(A)*/
(
currentTab == 0 && /*(B)*/
$('.update.last').length > 0 &&
parseInt($('.update.last').val(), 10) > 0
) ||
(
currentTab == 1 && /*(C)*/
$.trim($('#title').val()).length > 0 &&
$.trim($('#price').val()).length > 0 &&
$.trim($('#description').val()).length > 0
)
) {
var tabIndex = $(this).attr("rel");
$tabs.tabs('enable', tabIndex)
.tabs('select', tabIndex)
.tabs("option","disabled", [0, 1]);
} else if (!prev) {
switch (currentTab) {
case 0:
alert('Please choose an option.');
break;
case 1:
case 2:
alert('Please fill out all form inputs.');
break;
}
}
return false;
});
答案 1 :(得分:1)
修改点击事件处理程序:
$('.next-tab, .prev-tab').click(function() {
var $t = $(this), tabIndex = $t.attr("rel");
if ($t.hasClass("prev-tab")) {
if ($("input").filter('[value=""]').length) {
alert("Please fill out all form inputs.");
return false;
}
}
...
希望有所帮助。
答案 2 :(得分:0)
您可以编写一个验证函数来查看所选选项卡,然后编写需要填写的项目,以便下次启用。然后,可以在更改时将此函数绑定到需要填写的每个项目。