2013-03-05 71 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