diff --git a/core/js/singleselect.js b/core/js/singleselect.js
index 1a018b7414872b3a740e7adf26d63d5ea7f1fc0f..e2d94a9f2875c333afa8cdde4b14bbdd5517af1e 100644
--- a/core/js/singleselect.js
+++ b/core/js/singleselect.js
@@ -1,10 +1,13 @@
 (function ($) {
 	$.fn.singleSelect = function () {
 		return this.each(function (i, select) {
-			var input = $('<input/>');
+			var input = $('<input/>'),
+			    inputTooltip = $(select).attr('data-inputtitle');
+			if (inputTooltip){
+				input.attr('title', inputTooltip);
+			}
 			select = $(select);
 			input.css('position', 'absolute');
-			input.css(select.offset());
 			input.css({
 				'box-sizing': 'border-box',
 				'-moz-box-sizing': 'border-box',
@@ -28,7 +31,13 @@
 					select.data('previous', value);
 				} else {
 					event.stopImmediatePropagation();
+					// adjust offset, in case the user scrolled
+					input.css(select.offset());
 					input.show();
+					if ($.fn.tipsy){
+						input.tipsy({gravity: 'n', trigger: 'manual'});
+						input.tipsy('show');
+					}
 					select.css('background-color', 'white');
 					input.focus();
 				}
@@ -70,6 +79,9 @@
 
 			input.on('blur', function () {
 				$(this).change();
+				if ($.fn.tipsy){
+					$(this).tipsy('hide');
+				}
 			});
 		});
 	}
diff --git a/settings/js/users.js b/settings/js/users.js
index 4c2ad5417ca5531c8c24ce6dd12db35c861c2aed..6222c0e70cd687c8101faaf79916c1e4d61930f8 100644
--- a/settings/js/users.js
+++ b/settings/js/users.js
@@ -147,7 +147,11 @@ var UserList = {
 		quotaSelect.on('change', function () {
 			var uid = $(this).parent().parent().attr('data-uid');
 			var quota = $(this).val();
-			setQuota(uid, quota);
+			setQuota(uid, quota, function(returnedQuota){
+				if (quota !== returnedQuota) {
+					$(quotaSelect).find(':selected').text(returnedQuota);
+				}
+			});
 		});
 	},
 	// From http://my.opera.com/GreyWyvern/blog/show.dml/1671288
@@ -428,9 +432,14 @@ $(document).ready(function () {
 	});
 
 	$('select.quota, select.quota-user').singleSelect().on('change', function () {
+		var select = $(this);
 		var uid = $(this).parent().parent().attr('data-uid');
 		var quota = $(this).val();
-		setQuota(uid, quota);
+		setQuota(uid, quota, function(returnedQuota){
+			if (quota !== returnedQuota) {
+				select.find(':selected').text(returnedQuota);
+			}
+		});
 	});
 
 	$('#newuser').submit(function (event) {
diff --git a/settings/templates/users.php b/settings/templates/users.php
index b556ef4b92e6b4c7dc16a7ebd5045ad8cf038bc5..f9d4f6ada5eaf2b0484f2d64fd28c85e2ba3ba4c 100644
--- a/settings/templates/users.php
+++ b/settings/templates/users.php
@@ -41,7 +41,7 @@ $_['subadmingroups'] = array_flip($items);
 	<div class="quota">
 		<span><?php p($l->t('Default Storage'));?></span>
 			<?php if((bool) $_['isadmin']): ?>
-			<select class='quota'>
+			<select class='quota' data-inputtitle="<?php p($l->t('Please enter storage quota (ex: "512 MB" or "12 GB")')) ?>">
 				<option
 					<?php if($_['default_quota'] === 'none') print_unescaped('selected="selected"');?>
 						value='none'>
@@ -136,7 +136,7 @@ $_['subadmingroups'] = array_flip($items);
 			</td>
 			<?php endif;?>
 			<td class="quota">
-				<select class='quota-user'>
+				<select class='quota-user' data-inputtitle="<?php p($l->t('Please enter storage quota (ex: "512 MB" or "12 GB")')) ?>">
 					<option
 						<?php if($user['quota'] === 'default') print_unescaped('selected="selected"');?>
 							value='default'>