引导转盘和JQuery“;未捕获范围错误:超过最大调用堆栈大小;
我希望我的旋转木马只有在完全填写表格的情况下才能向前移动。我试过使用slide和slide方法以及previus、next和pause。通过下面的代码,我实现了我想要的功能和用户体验,但是有一个我关心的控制台错误引导转盘和JQuery“;未捕获范围错误:超过最大调用堆栈大小;,jquery,twitter-bootstrap,twitter-bootstrap-3,carousel,Jquery,Twitter Bootstrap,Twitter Bootstrap 3,Carousel,我希望我的旋转木马只有在完全填写表格的情况下才能向前移动。我试过使用slide和slide方法以及previus、next和pause。通过下面的代码,我实现了我想要的功能和用户体验,但是有一个我关心的控制台错误 Uncaught RangeError: Maximum call stack size exceeded 这个错误现在似乎不会影响任何事情,但我相信它会在生产中或生产线的某个地方发生 JS HTML 这具有正确的效果,即旋转木马移动到下一张幻灯片,然后暂停并返回,这样我就可以
Uncaught RangeError: Maximum call stack size exceeded
这个错误现在似乎不会影响任何事情,但我相信它会在生产中或生产线的某个地方发生
JS
HTML
这具有正确的效果,即旋转木马移动到下一张幻灯片,然后暂停并返回,这样我就可以告诉用户正确输入字段。但是,我很好奇如何修正这个错误
当您调用
prev
时,您将再次触发幻灯片
事件,并且一次又一次地无限触发
使用returnfalse取消事件,而不是暂停并返回代码>或使用e.preventDefault()代码>
另一种解决方案是使用滑动法,而不是滑动法。这样,它会在幻灯片完成后执行,检查幻灯片的输入,如果未完成,则将其移回
$('#carousel-example-generic').on('slid.bs.carousel', function (e) {
$(".item").each(function(i11,e12){
if ($(e12).hasClass("active")){
if ($(e12).prev().find("input:first").val() === ""){
$('.carousel').carousel('prev');
};
};
});
});
我猜您在调用prev
时再次触发了slide
事件,并且一次又一次地无限重复。如果在事件处理程序中简单地返回false
会发生什么?我添加了return false,并且在$('.carousel').carousel('prev')之后没有任何更改;谢谢你的帮助!我试过e.preventDefault();并在我的函数中添加(e),并尝试返回false;两者都不能阻止旋转木马向前移动。不要忘记完全删除暂停
和上一步
命令。如果仍然存在问题,则会发生其他问题。你能在重新创建你的代码吗?我创建了,但旋转木马仍在继续。当我将(e)登录到我的控制台时,它显示ce.Event{type:“slide”,relatedTarget:div.item.next.left,direction:“left”,timeStamp:1400091650636,jquery11207286902389023453:true…}我更新了Jfiddle以包含逻辑来检查字段是否已填充,它是否工作,因此它应该是我自己问题的一个很好的演示
<div id="carousel-example-generic" class="carousel slide carousel-off-screen form-group" data-ride="carousel" data-interval="false">
<div class="carousel-inner">
<div class="item active">
$('#carousel-example-generic').on('slide.bs.carousel', function(e) {
console.log(e);
$('.item.active',this).each(function(i,el) {
if ($(el).find('input:first').val()==='') {
e.preventDefault();
}
});
});
$('#carousel-example-generic').on('slid.bs.carousel', function (e) {
$(".item").each(function(i11,e12){
if ($(e12).hasClass("active")){
if ($(e12).prev().find("input:first").val() === ""){
$('.carousel').carousel('prev');
};
};
});
});