у полей нет внутреннего текста.
чтобы получить текст в поле, используй св-во
value
или
$.val() в jQuery.
и еще, что за функция
empty ?
вот работающий код
function empty(str) { return str.length === 0 };
$(':input').each( function() {
$(this).keypress( function() {
if (!empty($('#city_d').val()) & !empty($('#region_d').val()) & !empty($('#zone_d').val()) & !empty($('#city_d').val()))
$(':submit').show();
});
});