Tot nu toe heb ik dit:



if (valid != '') {
			
			$('#response_addmusic').slideUp(550).delay(150).removeClass().addClass('error').html('please correct the errors below!' + valid).slideToggle(550);
		} else {
		
			$('#response_addmusic').slideUp(550).delay(150).removeClass().addClass('processing').html('processing....').slideToggle(550);
		
		}



Alleen als ik dus nu eerst de slider met de class error naar benden heb en ik vul alle velden in, dan schuift eerst al de slider met de content van de class processing omhoog. Hoe kan ik zorgen dat eerst altijd de oude content en class omhoog schuift en daarna de juist weer naar beneden?
Onderstaande code werkt. Dit is wel zonder het opnieuw laden van de pagina.

<html>
<head>
		<script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js'></script>
		<script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.15/jquery-ui.min.js'></script>
</head>
<style>
.error {color: #ff0000;}
.processing {color: #0000ff;}
</style>
<body>
<div id="response_addmusic"></div>
<script type="text/javascript">
var valid = '';
function toggle(){
if (valid != '') {
    $('#response_addmusic').slideUp('slow', function() {
                                            $('#response_addmusic').delay(250)
                                                                    .removeClass()
                                                                    .addClass('error')
                                                                    .html('please correct the errors below!' + valid)
                                                                    .slideToggle(550);
                                            });
    valid = '';
} else {
    $('#response_addmusic').slideUp('slow', function() {
                                            $('#response_addmusic').delay(250)
                                                                    .removeClass()
                                                                    .addClass('processing')
                                                                    .html('processing....')
                                                                    .slideToggle(550)});
    valid = 'eeee';
        } 
}
</script>
<button onClick="toggle()">test</button>
</body>
</html>


Je kunt het nl oplossen door de slideUp te doen en de rest van war je uit wil voeren in een callBack te plaatsen. Hierbij word de rest niet eerder uitgevoerd dan dat de slideUp() klaar is.
oke bedankt! Dat pas ik morgen even aan! Alleen ik had nog een probleempje:
ik had dus dit:



$(document).ready(function() {

	$('#response_addmusic').hide();

	$('form #submit_addmusic').click( function(e) {
	
		e.preventDefault();
			
		var valid = '';
		var required = ' is required';
		var title = $('form #title').val();
		var code = $('form #code').val();
		
		if (title == '' || title.lenght <= 2) {
			valid = '<p class="err_submission"> - The Title' + required +'</p>';
		} 
		
		if (code == '' || code.lenght <= 5) {
			valid += '<p class="err_submission"> - The code' + required + '</p>';
		}
		
		
		if (valid != '') {
			
			$('#response_addmusic').slideUp(550).delay(150).removeClass().addClass('error').html('please correct the errors below!' + valid).slideToggle(550);
		} else {
		
			$('#response_addmusic').slideUp(550).delay(150).removeClass().addClass('processing').html('processing....').slideToggle(550);
			
			var addmusicData = $('#form_addmusic').serialize();
			submitMusic(addmusicData);
			
		}
	
	});

function submitMusic(addmusicData) {
	
	$.ajax({
	
		type: 'POST',
		url: 'functions/add_music_data.php',
		data: addmusicData,
		timeout: 7000,
		success: function() {
		
			$('#response_addmusic').delay(150).removeClass().addClass('success').html('Music succesfully added!').fadeIn(3000);
			
			if ($('#response_addmusic').hasClass('success')) {
				setTimeout("$('#response_addmusic').fadeOut('350')", 3500);
			}
			
			$('#title, #code').val("");
		}
	
	});

}


});



maar waarom werkt de hele fadeIn(3000) niet meer als er added succesfully wordt weergeven? het wordt gewoon weergegeven met een vaste snelheid ook al doe je FadeIn weg...
Bij succes voeg je de class success toe. Hierna doe je een fadeIn. Direct daarna doe je een if op aanwezigheid van de class success. Deze is er altijd op dit punt. In de if staat een fadeOut welke dus aan wordt geroepen voordat uberhaupt de fadeIn plaats heeft kunnen vinden.
Je kunt het if statement, als je deze wilt behouden, in de callback van de fadeIn zetten. Dan wordt eerst de gehele fadeIn uitgevoerd en daarna pas je if statement.
Voor de leesbaarheid van je script is het raadzaam om, bij gebruik van meerdere methoden, deze onder elkaar te plaatsen als in mijn voorbeeld. Dit vergroot de leesbaarheid aanzienlijk.
oke bedankt! Ik ga het nu even aan passen

[size=xsmall]Toevoeging op 02/01/2012 13:02:09:[/size]

nu heb ik dus:



$(document).ready(function() {

	$('#response_addmusic').hide();

	$('form #submit_addmusic').click( function(e) {
	
		e.preventDefault();
			
		var valid = '';
		var required = ' is required';
		var title = $('form #title').val();
		var code = $('form #code').val();
		
		if (title == '' || title.lenght <= 2) {
			valid = '<p class="err_submission"> - The Title' + required +'</p>';
		} 
		
		if (code == '' || code.lenght <= 5) {
			valid += '<p class="err_submission"> - The code' + required + '</p>';
		}
		
		
		if (valid != '') {
			
			$('#response_addmusic').slideUp(550, function() {
																$('#response_addmusic').delay(150)
																					   .removeClass()
																				       .addClass('error')
																				       .html('please correct the errors below!' + valid)
																				       .slideToggle(550)		
															});
		} else {
		
			$('#response_addmusic').slideUp(550, function() {
																$('#response_addmusic').delay(150)
																					   .removeClass()
																					   .addClass('processing')
																					   .html('processing....')
																					   .slideToggle(550)
															
															});
			
			var addmusicData = $('#form_addmusic').serialize();
			submitMusic(addmusicData);
			
		}
	
	});

function submitMusic(addmusicData) {
	
	$.ajax({
	
		type: 'POST',
		url: 'functions/add_music_data.php',
		data: addmusicData,
		timeout: 7000,
		success: function() {
		
			$('#response_addmusic').delay(150)
								   .removeClass()
								   .addClass('success')
								   .html('Music succesfully added!')
								   .fadeIn(3000, function() {
																if ($('#response_addmusic').hasClass('success')) {
																	setTimeout("$('#response_addmusic').fadeOut('550')", 3500);
																}					
									});
			
			
			
			$('#title, #code').val("");
		}
	
	});

}


});



alleen dat werkt nog steeds niet. (?)
Aantal vragen:
- Weet je zeker dat je in de success functie komt?
- Wat zegt de console in de browser? errors, warnings
- Heb je de pagina live staan?
ik heb hem al werkend gekregen met dit:



$.ajax({
	
		type: 'POST',
		url: 'functions/add_music_data.php',
		data: addmusicData,
		timeout: 7000,
		success: function() {
		
			$('#response_addmusic').fadeOut(100, function() {
			$('#response_addmusic')
								   .removeClass()
								   .addClass('success')
								   .html('Music succesfully added!')
								   .fadeIn(1000, function() {
																/*if ($('#response_addmusic').hasClass('success')) {
																	setTimeout("$('#response_addmusic').slideUp('550')", 3500);
																}*/					
									});
			
			});



toch bedankt nog! :D

[size=xsmall]Toevoeging op 02/01/2012 14:54:33:[/size]

en ik had die /* ... */ op lijn 15 - 17 omdat ik even ergens mee bezig was ;)

Reageren