Jquery ui JQueryUI选项卡选择和验证
在切换到下一个选项卡之前,我尝试验证选项卡内容(使用ajax验证)。因此,当用户单击选项卡时,当前选项卡内容将发送到服务器进行验证。当收到来自服务器的结果时,我切换到下一个选项卡。下面是一些代码:Jquery ui JQueryUI选项卡选择和验证,jquery-ui,jquery,jquery-ui-tabs,Jquery Ui,Jquery,Jquery Ui Tabs,在切换到下一个选项卡之前,我尝试验证选项卡内容(使用ajax验证)。因此,当用户单击选项卡时,当前选项卡内容将发送到服务器进行验证。当收到来自服务器的结果时,我切换到下一个选项卡。下面是一些代码: $('#tabs').tabs({ select: function(event, ui) { ... validate(currentIndex, nextIndex); return false; } }); function va
$('#tabs').tabs({
select: function(event, ui) {
...
validate(currentIndex, nextIndex);
return false;
}
});
function validate(currentIndex, nextIndex){
$.ajax({
...
complete: function(){
$("#tabs").tabs('select', nextIndex);
}
...
}
}
您可能已经看到了这个问题,这是一个无限循环,因为验证导致选项卡的选择处理程序导致验证,等等。如果没有全局变量,我将如何解决这个问题
谢谢。我不确定这是否有效(尚未尝试您的代码),但您能否使用添加某种“已验证”标志来检查?因此,在再次进入验证函数之前,您可以添加一个if语句来检查它。我不确定这是否有效(还没有尝试您的代码),但您不能使用添加某种“已验证”标志来检查它吗?因此,在再次进入验证函数之前,您添加了一个if语句来检查这一点。请查看 验证函数除了返回true或false之外,不应执行任何操作
$('#tabs').tabs(
{
select: function(event, ui)
{
...
return validate(currentIndex, nextIndex);
}
});
function validate(currentIndex, nextIndex)
{
$.ajax(
{
...
success: function(data)
{
// example response: {"error": 0}
if(!data.error) return true;
else return false;
}
...
}
}
当您的制表符('select'…函数返回false时,制表符将不会切换,如果为true,制表符将切换-因此您不必在验证函数中执行此操作。请查看
验证函数除了返回true或false之外,不应执行任何操作
$('#tabs').tabs(
{
select: function(event, ui)
{
...
return validate(currentIndex, nextIndex);
}
});
function validate(currentIndex, nextIndex)
{
$.ajax(
{
...
success: function(data)
{
// example response: {"error": 0}
if(!data.error) return true;
else return false;
}
...
}
}
当您的制表符('select'…函数返回false时,制表符将不会切换,如果为true,制表符将切换-因此您不必在验证函数中执行此操作。不幸的是,我使用了您建议的方法。我说“不幸”,因为它几乎是一个全局变量或某种类型的变量,我试图避免使用它-每次选择选项卡时,我都需要设置、重置或清除该变量,代码看起来不太好。但是,谢谢,它看起来更干净=)不幸的是,我使用了您建议的变量。我说“不幸”,因为它几乎是一个全局变量或某种类型的变量,我试图避免使用它-每次选择tabs时,我都需要设置、重置或清除该变量,代码看起来并不漂亮。但是,谢谢,它看起来更干净=)