jquery экспортирует выбранные параметры в текстовую область с удалением повторяющихся строк

Я создаю 2 кнопки, первая кнопка: для экспорта из нескольких полей выбора в текстовую область, вторая кнопка: для удаления повторяющихся строк из текстовой области

кнопка экспорта работает только в том случае, если я еще не нажал кнопку удаления дубликатов, если я уже нажал кнопку удаления дубликатов, когда я снова нажимаю кнопку экспорта, она снова не работает

function eliminateDuplicates(arr) {
    var i,
    len=arr.length,
    out=[],
    obj={};

    for (i=0;i<len;i++) {
        obj[arr[i]]=0;
    }
    for (i in obj) {
        out.push(i);
    }
    return out;
}
$(document).ready(function(){
    $("#remove-duplicates-button").click(function(){
        $("#text-area").val(eliminateDuplicates($("#text-area").val().split("\n")).join("\n"));
    });
    $("#export-button").click(function(){
        var hotels = [];
        $('#hotels :selected').each(function(i, selected){
            hotels[i] = $(selected).val()+"\n";
        });
        $("#text-area").append(hotels);
    });
});

нужна помощь, чтобы исправить это демо http://jsfiddle.net/4dtxf/3/

Спасибо за вашу помощь


person user770668    schedule 26.06.2013    source источник


Ответы (2)


Вместо этого используйте этот код:

function eliminateDuplicates(arr) {
    var i,
    len=arr.length,
    out=[],
    obj={};

    for (i=0;i<len;i++) {
        obj[arr[i]]=0;
    }
    for (i in obj) {
        out.push(i);
    }
    return out;
}
$(document).ready(function(){
    $("#remove-duplicates-button").click(function(){
        $("#text-area").val(eliminateDuplicates($("#text-area").val().split("\n")).join("\n"));
    });
    $("#export-button").click(function(){
        $("#text-area").val("");
        $('#hotels :selected').each(function(i, selected){
            $("#text-area").val($("#text-area").val() + $(selected).val()+"\n");
        });
    });
});

Всегда используйте val() для изменения или получения содержимого текстовой области...

http://jsfiddle.net/4dtxf/14/

person Atrox111    schedule 26.06.2013
comment
это работает, но появляется другая проблема, когда я ввожу вручную в текстовую область, а затем пробую кнопку, снова не работает - person user770668; 26.06.2013

Ну, похоже, у вас там были какие-то синтаксические ошибки, например, пропущенные ; и запятые вместо них. ОБНОВЛЕНИЕ: и используйте val вместо append для установки значения textarea.

function eliminateDuplicates(arr) {
    var i=0;
    var len=arr.length;
    var out=[];
    var obj={};

    for (i=0;i<len;i++) {
        obj[arr[i]]=0;
    }
    for (i in obj) {
        out.push(i);
    }
    return out;
}

$(document).ready(function(){
    $("#remove-duplicates-button").click(function(){
        $("#text-area").val(eliminateDuplicates($("#text-area").val().split("\n")).join("\n"));
    });
    $("#export-button").click(function(){
        var hotels = [];
        $('#hotels :selected').each(function(i, selected){
            hotels[i] = $(selected).val()+"\n";
        });
        var h=hotels.toString().replace(/,/g,'');
        $("#text-area").val(h);
    });
});

http://jsfiddle.net/4dtxf/13/

person David Jashi    schedule 26.06.2013
comment
сначала нажмите кнопку удаления дубликатов, затем нажмите кнопку экспорта, это не работает. кто-нибудь знает, почему? - person user770668; 26.06.2013
comment
Подожди минутку, а зачем тебе это? Вы не можете удалить дубликаты из пустого textarea — он пустой. Вы должны заполнить его в первую очередь. Ваш remove-duplicates-button работает с содержимым textarea. - person David Jashi; 26.06.2013
comment
Да вы правы, но тогда вы не можете экспортировать во второй раз - person Atrox111; 26.06.2013
comment
Я предпочитаю использовать append из-за его цели. Спасибо вам обоим. решено - person user770668; 26.06.2013
comment
появляется другая проблема T_T посмотри мой другой комментарий - person user770668; 26.06.2013