2013-03-05 89 views
0

所以我做了这里快速注册表格:两个jQuery的UI问题

http://jsfiddle.net/pBEt2/

的Javascript:

$(document).ready(function(){ 
    $('input:button').click(function(){ 
     $('input[type="text"]').each(function(indx){ 
      var $currentField = $(this); 
      if ($currentField.val() === ''){ 
       $currentField.addClass('empty'); 
       $('#answer').html("Please fill out all fields"); 
      } else{ 
       $currentField.removeClass('empty'); 
       $('#answer').html("Thank you!"); 
       $('#answer').effect('blind'); 
      } 
     }); 
}); 
}); 

不管怎么说,一旦你填写所有的区域,它为您提供了一个响应说“谢谢”,我做了一个Jquery效果(称为'百叶窗'),这使得文字上升:

第一个问题:

在当前的代码中,由于总共有四个输入,文本“谢谢”滑动四次。任何理由?我该如何解决?

第二个问题:

我如何使它所以效果实际上并没有生效,几秒钟后。用这种方式,用户可以看到文本,然后允许它滑动?

谢谢。

+0

对于第二个问题,请使用['.delay()'](http://api.jquery.com/delay/)。 – Dom 2013-03-05 19:59:12

+0

请在此处发布您的代码,并*不要*通过将您的文章的随机位格式化为代码来颠覆错误消息。 – 2013-03-05 20:07:17

+0

我认为只是在小提琴中阅读它会更容易,但没关系,我现在就添加它。不想违反规则。 – 2013-03-05 20:09:25

回答

2

您使用$('input[type="text"]').each(function(indx)...,因为本作有type=text任何input运行这段代码:

$('#answer').html("Thank you!"); 

我编辑你的代码,你的jQuery:

$(document).ready(function(){ 

    $('input:button').click(function(){ 
     var flag = true; 
     $('input[type="text"]').each(function(indx){ 
      var $currentField = $(this); 
      if ($currentField.val() === ''){ 
       $currentField.addClass('empty'); 
       flag=false; 
      } else{ 
       $currentField.removeClass('empty'); 
      } 
     }); 
     if(flag){ 
      $('#answer').css('display','block'); 
      $('#answer').html("Thank you!"); 
     } 
     else 
      $('#answer').html("Please fill out all fields"); 
}); 
}); 

http://jsfiddle.net/pBEt2/7/

1
$(document).ready(function(){ 
     var error = false; 
    $('input:button').click(function(){ 
     $('input[type="text"]').each(function(indx){ 
      var $currentField = $(this); 
      if ($currentField.val() === ''){ 
       $currentField.addClass('empty'); 
       $('#answer').html("Please fill out all fields"); 
       error = true; 
      } else{ 
       $currentField.removeClass('empty'); 


      } 
     }); 
}); 

    if(error == true){ 
      $('#answer').html("Thank you!"); 
     $('#answer').effect('blind'); 
    } 
}); 

你使用each.So它迭代4次。因为我们有4个输入字段。使用这个代码你可以解决这个问题。

+0

该代码在JSFiddle中不起作用。另外,在底部的if语句中,它对我来说并没有意义(我是初学者)。如果错误== true,那么为什么你设置error = false? – 2013-03-05 20:05:56

+0

否则它会保持真实,如果你再次点击第二次 – PSR 2013-03-05 20:07:20

1
$(document).ready(function(){ 
    $("#answer").slideUp(); 
    $('input:button').click(function(){ 
     var correct = true; 
     $('input[type="text"]').each(function(indx){ 
      var $currentField = $(this); 
      if ($currentField.val() === ''){ 
       $currentField.addClass('empty'); 
       correct=false; 
      } else{ 
       $currentField.removeClass('empty'); 
      } 
     }); 

     $("#answer").slideDown(); 
     if(correct){ 
      $('#answer').html("Thank you!"); 
      setTimeout(function() { 
       $("#answer").slideUp(); 
      }, 3000);//this is the time you want to wait. 
     } 
     else{ 
      $('#answer').html("Please fill out all fields"); 
     } 
    }); 
}); 
+0

我认为“你想等待的时间”是错误的。它在jsfiddle中不起作用(尽管代码的其余部分确实如此)。它也只是看起来不正确,因为它在功能之外。 – 2013-03-05 20:18:05

+1

你是对的我已经改变了代码是盲目的,这是一个问题 – kilkadg 2013-03-05 20:26:49

+0

问题是,我只希望它滑动时,所有的投入都填写,它说“谢谢”,目前它也幻灯片为“请填写所有领域”。 – 2013-03-05 20:34:22