如何在JQuery中有两个按钮步骤
我真的需要一些帮助。所以我使用一个Jquery Steps PlugIn。现在在这个插件中,当我们转到last tab
时,它有一个按钮名称为“完成”,当点击呼叫"onFinishing"
方法。如何在JQuery中有两个按钮步骤
onFinishing: function() {
var loadedPrefix = MyNamespace.loadedPrefix;
var inputBoxPrefix = $('#SitePrefix').val();
$.ajax({
type: 'POST',
url: '/Settings/IsPrefixExists',
data: { newPrefix: inputBoxPrefix, prefixLoadedFromDB: loadedPrefix },
success: function (data) {
// do some stuff here
}
},
error: function() {
DisplayError('Failed to load the data.');
}
});
}
现在上面的作品完全没问题。但我的经理希望我在那里有两个按钮。一个为“保存”,另一个为“提交”。点击它们将执行不同的操作。但是这个插件只有一个“完成”按钮。它通过PlugIn的Javascript代码生成。我可以以某种方式使用JQuery/Javascript在那里有一个更多的按钮,并写下一些代码。
JS FIDDLE示例:JS FIDDLE SAMPLE
样品实施例: JS FIDDLE
使用在Steps plugin documentation发现onStepChanged
事件......
你可以这样做:
$(window).load(function() {
$("#example-basic").steps({
headerTag: "h3",
bodyTag: "section",
transitionEffect: "slideLeft",
autoFocus: true,
onFinishing: function() {
alert("Hello");
},
onStepChanged:function (event, currentIndex, newIndex) {
console.log("Step changed to: " + currentIndex);
if(currentIndex == 2){
console.log("ok");
var saveA = $("<a>").attr("href","#").addClass("saveBtn").text("Save");
var saveBtn = $("<li>").attr("aria-disabled",false).append(saveA);
$(document).find(".actions ul").prepend(saveBtn)
}else{
$(".actions").find(".saveBtn").remove();
}
return true;
},
});
// on Save button click
$(".actions").on("click",".saveBtn",function(){
alert("Saving!");
});
});
非常感谢你。你能不能告诉我在这里使用超时。你的代码工作正常,但像我这样的初学者很复杂。因此,您添加了一个锚标签,然后将该锚标签添加到该按钮,然后将其添加到UL元素。直到这里我明白了。超时的意义是什么? – Unbreakable
另外,检查currentIndex == 1,我无法理解。 – Unbreakable
没有用处......我不知道'.actions'是否是动态的......所以我默认做了它。 –
不管使用的步骤插件,您可以添加保存b utton的最后一步,并且绑定click处理就像你使用任何正常的按钮:
<input id='btnSave' name='btnSave' value='Save' type='button'>
,并在你的JavaScript:
$('#btnSave').click(function() {
$.ajax({
type: 'POST',
url: '/Settings/SavePrefix',
data: { newPrefix: inputBoxPrefix, prefixLoadedFromDB: loadedPrefix },
success: function (data) {
// do some stuff here
}
},
error: function() {
DisplayError('Failed to save the data.');
}
});
});
您可以根据需要也注入按钮。
使用默认插件里面的标记与ID为#steps-uid-8
你可以得到完成元素$('#steps-uid-8 a').last()
;它是嵌套在<li>
这是<ul>
内内这样你可以得到的UL $('#steps-uid-8 a').last(),parent().parent()
参考使用引用您可以添加一个超链接让你的“按钮”具有相同风格的插件,这样:
$('#steps-uid-8 a').last().parent().parent().prepend("<li><a id='btnSave' name='btnSave'>Save</a></li>");
你也可以在你的设置增加一个功能,只显示在最后一步保存按钮,如果你需要
var numberOfSteps=3,// change as needed
var settings = {
onStepChanged: function (event, currentIndex, priorIndex)
{
if(currentIndex==numberOfSteps) $('#btnSave').show();
else $('#btnSave').hide();
}
}
使用你的小提琴,在onload JavaScript是根本改变。
<script>
function saveMe() {
alert('Saving');
}
$(window).load(function() {
var lastStep = 2;
$("#example-basic").steps({
headerTag: "h3",
bodyTag: "section",
transitionEffect: "slideLeft",
onStepChanged: function(event, currentIndex, priorIndex) {
//console.log(currentIndex);
if (currentIndex == lastStep) $('#btnSave').show();
else $('#btnSave').hide();
},
autoFocus: true,
onFinishing: function() {
alert("Hello");
},
}).find('a')
.last().parent().parent()
.prepend("<li><a style='display:none' href='#save' id='btnSave' name='btnSave' onclick='saveMe()'>Save</a></li>");
});
</script>
这里有一个工作副本:https://jsfiddle.net/rwh64ja8/
我会尽力回复你。我会给一个jSFIddle,但我不知道如何在JSFIddle中添加这个插件。 – Unbreakable
我需要放置此代码的位置。该插件使用其JavaScript代码自动创建“完成”按钮。我应该在哪里放置你给的代码?请指导我。 – Unbreakable
这条线会去哪里'' – Unbreakable
如果这不是一个不费力的代码请求... –
只要告诉我如何在JSFIddle中添加该插件,我将显示我的努力。你能否告诉我如何在JSFiddle中添加该插件。 – Unbreakable
Stack Overflow有自己的JSFiddle内置版本:https://*.blog/2014/09/16/introducing-runnable-javascript-css-and-html-code-snippets/ –