Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery ui JQueryUI选项卡选择和验证_Jquery Ui_Jquery_Jquery Ui Tabs - Fatal编程技术网

Jquery ui JQueryUI选项卡选择和验证

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

在切换到下一个选项卡之前,我尝试验证选项卡内容(使用ajax验证)。因此,当用户单击选项卡时,当前选项卡内容将发送到服务器进行验证。当收到来自服务器的结果时,我切换到下一个选项卡。下面是一些代码:

$('#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时,我都需要设置、重置或清除该变量,代码看起来并不漂亮。但是,谢谢,它看起来更干净=)