Index: wp-admin/js/post.dev.js
===================================================================
--- wp-admin/js/post.dev.js	(revision 17243)
+++ wp-admin/js/post.dev.js	(working copy)
@@ -342,6 +342,16 @@
 	if ( $('#submitdiv').length ) {
 		stamp = $('#timestamp').html();
 		visibility = $('#post-visibility-display').html();
+				
+		function updatePasswordSubmitability() {
+			var post_password = jQuery.trim($('#post_password').val());
+			if ( post_password == '' ) {
+				$('.save-post-visibility', '#post-visibility-select').addClass('button-disabled');
+			} else {
+				$('.save-post-visibility', '#post-visibility-select').removeClass('button-disabled');
+				$('#post_password').removeClass('form-invalid');
+			}
+		}
 
 		function updateVisibility() {
 			var pvSelect = $('#post-visibility-select');
@@ -352,11 +362,16 @@
 				$('#sticky-span').show();
 			}
 			if ( $('input:radio:checked', pvSelect).val() != 'password' ) {
-				$('#password-span').hide();
+				$('#password-span').hide();				
+				$('.save-post-visibility', '#post-visibility-select').removeClass('button-disabled');
 			} else {
 				$('#password-span').show();
+				updatePasswordSubmitability();
 			}
 		}
+		
+		// disable submit button based on password field content
+		$('#post_password').keyup(function() {updatePasswordSubmitability();});
 
 		function updateText() {
 			var attemptedDate, originalDate, currentDate, publishOn, postStatus = $('#post_status'),
@@ -454,6 +469,12 @@
 
 		$('.save-post-visibility', '#post-visibility-select').click(function () { // crazyhorse - multiple ok cancels
 			var pvSelect = $('#post-visibility-select');
+			if ( $('.save-post-visibility', pvSelect).hasClass('button-disabled') ) {
+				$('#post_password').addClass('form-invalid');
+				return false;
+			}else {
+				$('#post_password').removeClass('form-invalid');
+			}
 
 			pvSelect.slideUp("normal");
 			$('.edit-visibility', '#visibility').show();
