0

我使用 Primefaces 3.5。并尝试在 .onnext 处理程序中调用 js 函数<p:wizard/>。我希望在验证结果ob当前选项卡后,onnext返回特定选项卡上的选项卡。我的验证功能

    function validateManageOtherTournaments(wizard, validationTab, lang) {
                var currentTabId = validationTab;
                if (currentTabId != 'competitionId') {
                    return wizard.next();
                }

                var seasonVal = document.getElementById('manageTournament:name_season_input').value;
                var dateFromVal = document.getElementById('manageTournament:dateFrom_input').value;
                var dateToVal = document.getElementById('manageTournament:dateTo_input').value;
                /*var compNameVal = document.getElementById('manageTournament:title_input').value;*/

                var isValidName = validateFieldsInOtherTournament('manageTournament', ['title'], lang);
                if (isValidName) {
                    if (validRuContentT) {
                        var filledBothDate = (dateFromVal != "" &amp;&amp; dateToVal != "");
                        var isEmptySeason = ("" != String(seasonVal));
                        if ( filledBothDate || isEmptySeason) {
                            return wizard.next();
                        }
                    }
                }
                return "competitionId"; // currentTab
            } 

我使用代码js 向导。但它仍然不起作用。(

//更新

I try to do something like this

 function validateManageOtherTournaments(wizard, validationTab, lang) {
                /*var wizardElement = document.getElementById('wiz');*/

                var currentTabId = validationTab;
                if (currentTabId != 'competitionId') {
                    var currentStepIndex = wizard.getStepIndex(wizard.getState().currentStep),
                            stepIndexToGo = currentStepIndex + 1;
                    var stepIdToGo = wizard.cfg.steps[stepIndexToGo];
                    return wizard.loadStep(stepIdToGo, stepIndexToGo, false);        // next
                }

                var seasonVal = document.getElementById('manageTournament:name_season_input').value;
                var dateFromVal = document.getElementById('manageTournament:dateFrom_input').value;
                var dateToVal = document.getElementById('manageTournament:dateTo_input').value;
                /*var compNameVal = document.getElementById('manageTournament:title_input').value;*/

                var isValidName = validateFieldsInOtherTournament('manageTournament', ['title'], lang);
                if (isValidName) {
                    if (validRuContentT) {
                        var filledBothDate = (dateFromVal != "" &amp;&amp; dateToVal != "");
                        var isEmptySeason = ("" != String(seasonVal));
                        if ( filledBothDate || isEmptySeason) {
                            var currentStepIndex = wizard.getStepIndex(wizard.getState().currentStep),
                                    stepIndexToGo = currentStepIndex + 1;
                            var stepIdToGo = wizard.cfg.steps[stepIndexToGo];
                            return wizard.loadStep(stepIdToGo, stepIndexToGo, false);         // next
                        }
                    }
                }
                var currentStepIndex = wizard.getStepIndex(this.getState().currentStep),
                stepIndexToGo = currentStepIndex;
                var stepIdToGo = wizard.cfg.steps[stepIndexToGo];
                return wizard.loadStep(stepIdToGo, stepIndexToGo, false);     //competitionId
            }

如何在向导的 onnext 功能选项卡中返回?

4

1 回答 1

1

我做了这样的事情:

public String onFlowProcess(FlowEvent event)
{
  if (!event.getOldStep().equals("competitionId"))
  {
    return event.getNewStep();
  }
  if (validationPassed())
  {
    return event.getNewStep();
  }
  else
  {
    return event.getOldStep();
  }
}

private boolean validationPassed()
{
  // do your validation here.
  // return true if validation passed
}

然后在我的向导中:flowListener="#{myBean.onFlowProcess}"

于 2013-02-08T14:06:00.787 回答