Espero haber entendido:
http://jsbin.com/urayan
Código HTML:
Ver original<script type="text/javascript"> jQuery(document).ready(function($){
// function interseccion( texto1 , texto2 ) {
// array1 = texto1.split(",");
// $.each(texto2.split(",") , function (ind , valor) {
// if (array1.indexOf(valor) == -1)
// array1.push(valor);
// });
// return array1;
// }
//differencia en lugar de interseccion
Array.prototype.diff = function(a) {
return this.filter(function(i) {return !(a.indexOf(i) > -1);});
};
$("#wpsi_res_submit").click(function() {
//$( "#sortable" ).empty(); // no vaciar!
var input_1 = $('#wpsi_res_img1'); //almacenar los inputs en variables
var input_2 = $('#wpsi_res_img2'); //almacenar los inputs en variables
var valor2 = '';
var val_arr1 = input_1.val().split(','); //calcular la diferencia
var val_arr2 = input_2.val().split(','); //calcular la diferencia
var inter = val_arr2.diff(val_arr1); //calcular la diferencia
console.log(inter); //debug
console.log(inter.length); //debug
for (i = 0; i < inter.length; i++) {
//agregar solo los que son nuevos
$( "#sortable" ).append('<li class="ui-state-default" id="li-' + inter[i] + '">' + inter[i] + '
<input type="checkbox" class="check" id="eliminar-' + inter[i] + '" /><\/li>');
valor2 += inter[i];
if (i < inter.length - 1) {
valor2 += ',';
}
}
input_1.val(input_1.val() + ',' + valor2); //en lugar de borrar todo, agregar solo los nuevos
input_2.val('');
});
$("#sortable").sortable({
update: function() {
var wpsi_pos = [];
$('#sortable > li').each(function(i) {
wpsi_pos[i] = $(this).attr('id').replace('li-' , '');
});
$('#wpsi_res_img1').val(wpsi_pos.toString());
}
});
$("#wpsi_res_delete").click(function () {
$('.check:checked').parent().empty().remove();
var wpsi_pos2 = [];
$('#sortable > li').each(function(i) {
wpsi_pos2[i] = $(this).attr('id').replace('li-' , '');
});
$('#wpsi_res_img1').val(wpsi_pos2.toString());
});
});
Comenté los cambios para que puedas entender lo que hice :P