我在我的应用上使用jQuery-steps来获得类似向导的情况。我无法找到如何更改为自定义步骤。对这个有任何帮助吗?
$(function () {
$("#wizard").steps({
headerTag: "h2",
bodyTag: "section",
transitionEffect: "slideLeft",
enableFinishButton: false,
labels: {
next: $('#next').html(),
previous : $('#previous').html()
},
onStepChanged: function (event, currentIndex, priorIndex)
{
if( priorIndex == 0) {
var selected = $('input[name=radio_wizard]:checked', '#radio_wizard').val()
switch( selected ){
case 1:
// GOTO 1
break;
case 2:
// GOTO 2
break;
case 3:
// GOTO 3
break;
}
}
}
}
如何实现这一目标?
答案 0 :(得分:26)
我这样做了所以我创建了这个新功能:
function _goToStep(wizard, options, state, index)
{
return paginationClick(wizard, options, state, index);
}
并且没有实现的调用,把这个:
$.fn.steps.setStep = function (step)
{
var options = getOptions(this),
state = getState(this);
return _goToStep(this, options, state, step);
};
利用已经存在的插件。
使用:
wizard.steps("setStep", 1);
答案 1 :(得分:16)
我找到了一种简单的方法。 你可以使用jquery函数
$("#wizard-t-2").get(0).click();
假设您知道要去哪一步。 这个例子将带您进入向导的第三步。 使用chromes编辑器找出你要去的步骤的确切ID。
答案 2 :(得分:11)
stepsWizard = $("#wizard").steps({
forceMoveForward : true,
enablePagination: false,
titleTemplate : '<span class="number">#index#.</span> #title#'
});
stepsWizard.steps("next"); // this will send us on next step :-)
&#13;
答案 3 :(得分:9)
检查我的以下实施,你觉得怎么样?
$.fn.steps.setStep = function (step)
{
var currentIndex = $(this).steps('getCurrentIndex');
for(var i = 0; i < Math.abs(step - currentIndex); i++){
if(step > currentIndex) {
$(this).steps('next');
}
else{
$(this).steps('previous');
}
}
};
您可以非常轻松地执行新方法:
$("#form").steps("setStep", 4); //based on 0 (set the index)
此致,Nicholls
答案 4 :(得分:4)
基于documentation,它似乎缺乏现在的功能:
/*
* Sets a specific step object by index.
*
* @method setStep
* @param index {Integer} An integer that belongs to the position of a step
* @param step {Object} The step object to change
*
*/
$.fn.steps.setStep = function (index, step)
{
throw new Error("Not yet implemented!");
};
答案 5 :(得分:3)
基于@AbdulJamal的答案,我已经为任何步骤实施了它:
string
请注意,必须定义$(function () {
var stepsWizard = $("#wizard").steps({
...
});
// step variable handles current step (from 0)
for(var i=0; i<step; i++) {
stepsWizard.steps("next");
}
});
变量且等于或大于0。
答案 6 :(得分:1)
function GotoSpecificStep(action, currentStep, number) {
try
{
var stepsTogo = parseInt(currentStep) - parseInt(number);
for (i = 1; i <= Math.abs(parseInt(stepsTogo)) ; i++) {
if (action == "next") {
$(".btnNext").click();
}
else if (action == "prev") {
$(".btnPrevious").click();
}
}
}
catch(exception)
{
MsgBox(exception.message);
}
}
答案 7 :(得分:0)
通过@FernandoTholl添加到answer above,为了澄清,wizard.steps("setStep", 1);
进入onStepChanged
$('#wizard').steps({
onStepChanging: function (event, currentIndex, newIndex) {
//blah, blah, blah, some code here
},
onStepChanged: function (event, currentIndex, newIndex) {
$('#wizard').steps("setStep", 3);
},
onFinished: function () {
///more code
}
});
答案 8 :(得分:0)
我做了类似下面的事情来实现它:
stepsWizard = $("#wizard").steps({
headerTag: "h2",
bodyTag: "section"
});
var indx = 3;
for (i = 0; i <= indx; i++) {
stepsWizard.steps("next");
}
答案 9 :(得分:0)
另一个简单的解决方案:
var desiredStep = 0;
$("#steps-uid-0-t-" + desiredStep).click();
答案 10 :(得分:0)
创建了此新功能:
function _goToStep(wizard, options, state, index)
{
return paginationClick(wizard, options, state, index);
}
And the call that is not implemented, put this:
未实现的呼叫,请输入以下内容:
$.fn.steps.setStep = function (step)
{
var options = getOptions(this),
state = getState(this);
return _goToStep(this, options, state, index); //Index Instead step
};
wizard.steps("setStep", 1);
工作正常
答案 11 :(得分:0)
onInit: function(event) {
let div = event.currentTarget;
let lis = div.getElementsByTagName('li');
// Choose second tab
// active is just show style, only effective after clicking tag a.
lis[1].className += ' active';
$(lis[1]).children('a').click();
}
答案 12 :(得分:0)
我这样做是因为我在jquery.steps.js中创建了这个新函数,是在render()
{
const MainApp = !this.state.isLoading? createAppContainer(Navigator):<></>;
return this.state.isLoading?<AppLoading/>:<MainApp/>;
}
函数之前的重要插入:
$.fn.steps.setStep
在jquery.steps.js中找到function _goToStep(wizard, options, state, index)
{
return paginationClick(wizard, options, state, index);
}
并替换为:
$.fn.steps.setStep = function
使用:
$.fn.steps.setStep = function (step)
{
var options = getOptions(this),
state = getState(this);
return _goToStep(this, options, state, step);
};
答案 13 :(得分:0)
这是我找到的最简单的解决方案。
var tablist_item = 'ef_users_list-t-';
var step = 2; // step number to jump to
$(tablist_item+step).trigger('click');
答案 14 :(得分:0)