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

那是因为你正在覆盖它。尝试连接:

$('#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 回答
0

使用运算符将​​旧 val 与新 val 连接起来+......您可以使用多个选择器来避免多个 keyup 功能......

尝试这个

$("#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 回答