2013-03-05 2 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 (называемый «жалюзи»), что делает текст повышающимся:

1-й вопрос:

С текущим кодом текст «спасибо» скользит вверх 4 раза из-за всего четырех входов. Почему? Как это исправить?

второй вопрос:

Как сделать так, эффект фактически не вступит в силу через несколько секунд. Таким образом, пользователь может видеть текст, а затем разрешить ему перемещаться вверх?

Спасибо.

+0

Для вашего второго вопроса используйте ['.delay()'] (http://api.jquery.com/delay/). – Dom

+0

Пожалуйста, размещайте свой код здесь и * не делайте * подрывайте сообщение об ошибке, форматируя случайный бит вашего сообщения в качестве кода. –

+0

Я подумал, что было бы проще просто прочитать его в скрипке, но все в порядке, я добавлю его сейчас. Не хотите нарушать правила. –

ответ

2

Вы использовали $('input[type="text"]').each(function(indx)..., и из-за этого для любого input, который имеет type=text он работает этот код:

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

Вы использовали каждый.So он выполняет итерацию 4 раза. Поскольку у нас есть 4 поля ввода. Используя этот код, вы можете исправить проблему.

+0

Этот код не работает в JSFiddle. Кроме того, в выражении if внизу это не имеет для меня никакого смысла (я новичок). Если error == true, то почему вы устанавливаете ошибку = false? –

+0

в противном случае это останется верным, если вы нажмете второй раз и – PSR

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 (хотя остальная часть кода делает). Он также выглядит неправильно, поскольку он находится вне функции. –

+1

Вы правы. Я изменил код, который слепил, это была проблема. – kilkadg

+0

Проблема в том, что я хочу, чтобы она скользила, когда все входы заполнены, и в ней говорится «Спасибо», в настоящее время она также слайд для «Пожалуйста, заполните все поля". –

Смежные вопросы