引导转盘和JQuery“;未捕获范围错误:超过最大调用堆栈大小;

引导转盘和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 这具有正确的效果,即旋转木马移动到下一张幻灯片,然后暂停并返回,这样我就可以

我希望我的旋转木马只有在完全填写表格的情况下才能向前移动。我试过使用slide和slide方法以及previus、next和pause。通过下面的代码,我实现了我想要的功能和用户体验,但是有一个我关心的控制台错误

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');
            };
        };
    });
});