"Подозреваю, что для браузеров которые не поддерживают placeholder выполняется эмуляция данного свойства под средством скрипта, который просто подставляет значение атрибута placeholder в атрибут value. Следствием этого возникает ситуация, что форма считается заполненной. " Это само собой разумеется. Проблему решил - перед валидацией обнулять значения placeholder просто и всё. $( function() { $( "input" ).textPlaceholder(); $( "form" ).submit( function() { var result = true; $( ".text-placeholder" ).val( "" ); $( "input" ).each( function() { if ( !$( this ).val() ) { alert( "Enter " + $( this ).attr( "name" ) ); result = false; } } ); return result; } ); } );