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ですか?

4

4 に答える 4

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/

スクリプトは住所の一部の削除も正しく処理し、結果を自動的に更新します。

于 2013-03-13T05:38:48.150 に答える
0

演算子を使用して古い val と新しい val を連結し+ます...そして、複数のセレクターを使用して複数のキーアップ機能を回避できます....

これを試して

$("#trainer_address,#trainer_city,#trainer_state,#trainer_zip").keyup( function () {
  var location=$('#location').val();
  $('#location').val(location + $(this).val());
});
于 2013-03-13T05:19:50.237 に答える
0

value次のようにネイティブを使用できます。

$('#location')[0].value += this.value;
于 2013-03-13T05:21:41.743 に答える
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()イベント関数ごとにそれを行います

于 2013-03-13T05:19:02.580 に答える