0

我对 jquery 步骤插件有疑问。

我创建了 3 个步骤;第一个是演示文稿,第二个是表格,第三个是结果表格的部分。

<script>

function hasClass(element, cls) {
    return (' ' + element.className + ' ').indexOf(' ' + cls + ' ') > -1;
}

$("#example-async").steps({
    headerTag: "h3",
    bodyTag: "section",
    transitionEffect: "slide",
    onFinished: function (event, currentIndex) {

    },
    labels: {
        finish: "Register",
        next: "Next",
        previous: "Back",
        loading: "Loading ..."
    },
    enableFinishButton: false,
    saveState: true,
    onStepChanging: function(event, currentIndex, newIndex)
        {
           var move = true;

            if (currentIndex == 1) { // form
                move = false;

                var values = {};
                $.each($('#UserRegisterForm input'), function(i, field) {
                    values[field.name] = field.value;
                });


                $.ajax({
                    type: 'POST',
                    url: "/cakephp/ajax/register_user",
                    data: JSON.stringify(values) ,
                    contentType: "application/json",
                    dataType: 'json',
                    success: function (data) {

                        if (data.result === 'ok') 
                        {                 
                            move = true;

                            $("#example-async").steps("setStep", 2);

                        } else {

                            move = false;
                        }

                    }
                });              

            }               

           return move;

        }
});

当我单击按钮 Next into 2section 时,我调用 perl 脚本,如果 var“result”等于“ok”,我更改了部分,否则我将错误返回到表单中。但是当我点击下一步按钮时,我的步骤没有改变!

我已经在 jquery.step 中实现了太多功能。我添加一个功能:

$.fn.steps.setStep = function (step) { 
return _goToStep(this, getOptions(this), getState(this), step);    };

和:

function _goToStep(wizard, options, state, index){
return paginationClick(wizard, options, state, index); }

我哪里错了?

4

2 回答 2

0

正如我们在文档中看到的:

onStepChanging在步骤更改之前触发,可用于通过返回 false 来防止步骤更改。

你为什么用$("#example-async").steps("setStep", 2);?只需返回true,然后 StepChanging 操作将自动完成。

顺便说一句,我遇到了使用 API 移动到指定步骤的相同问题,但我没有找到解决方案(我认为现在没有这样的功能,也许在未来的版本中会有)并通过模拟解决了这个问题单击步骤按钮。

$("#<1>-t-<2>").get(0).click(); 在哪里:

<1> - 你的 jQuery Steps 正文的 ID。

<2> - 您要移动的步骤的索引(从零开始)。

例如:

$("#example-async-t-2").get(0).click(); // Move to the third step

true但就您而言,我认为您只需要返回即可data.result

于 2015-01-31T15:05:31.750 回答
-2

添加

异步:假,

给你的ajax

于 2021-05-07T19:53:43.913 回答