2013-03-13 2 views
2

Я пытаюсь заполнить поле уличным адресом, городом, штатом и почтовым индексом, но прямо сейчас, когда я ввожу данные в каждое поле, он заменяет последнее.Заполнение поля из нескольких полей ввода?

$("#trainer_address").keyup(function() { 
     $('#location').val($(this).val()); 
    }); 

    $("#trainer_city").keyup(function() { 
     $('#location').val($(this).val()); 
    }); 

    $("#trainer_state").keyup(function() { 
     $('#location').val($(this).val()); 
    }); 

    $("#trainer_zip").keyup(function() { 
     $('#location').val($(this).val()); 
    }); 

Как заставить его сохранить предыдущее значение, а затем добавьте следующий, так что я могу закончить с чем-то вроде 402 StreetAddress City State, 12345?

+0

Это интересно. Что произойдет, если вы вернетесь в первое поле? Должен ли он добавить еще один раз? – dfsq

+0

Вы хотите, чтобы местоположение было адресом + город + штат + почтовый индекс? – Bemmu

ответ

0

Это потому, что вы переписываете его. Попробуйте конкатенации:

$('#location').val($('#location').val() + $(this).val()); 

Например, изменить:

$("#trainer_zip").keyup(function() { 
    $('#location').val($(this).val()); 
}); 

к этому:

$("#trainer_zip").keyup(function() { 
    $('#location').val($('#location').val() + $(this).val()); 
}); 

ли, что для каждой функции keyup() событий

+0

путают, как реализовать это решение –

+0

Я сделал это для вас. .... .... см. мое редактирование – Jace

0

сцепить старый Вэл с новым val с использованием оператора + ... и вы можете избежать нескольких KeyUp функция, используя множественный селектор ....

попробовать это

$("#trainer_address,#trainer_city,#trainer_state,#trainer_zip").keyup(function() { 
    var location=$('#location').val(); 
    $('#location').val(location + $(this).val()); 
}); 
+0

по какой-то причине, набрав 'street' i end up with' streetstreetstreet' –

0

Вы можете использовать родной value так:

$('#location')[0].value += this.value; 
+0

Как добавить это решение? –

+0

Вам просто нужно заменить строку, в которой вы устанавливаете значение. – elclanrs

1

Этот скрипт сделает это:

var $loc = $('#location'), 
    address = [], 

getAddress = function() { 
    var str = address.slice(0, 3).join(' ') + ', ' + (address[3] || ''); 
    return str.replace(/\s+/g, ' ').replace(/,\s$/, ''); 
} 

$("#trainer_address, #trainer_city, #trainer_state, #trainer_zip").on({ 
    focus: function() { 
     $loc.val(getAddress()); 
    }, 
    keyup: function() { 
     address[$(this).index()] = $(this).val(); 
     $(this).trigger('focus'); 
    } 
}); 

http://jsfiddle.net/J6G9f/1/

Сценарий также правильно обрабатывает удаление частей адреса, и он автоматически обновляет результат.

Смежные вопросы