2017-04-22 6 views
0

nach Drücken der Taste „“ i neue Eingabe anhängen, wenn ich Backspace letzte Eingabe verwenden wird entfernt, aber nach alle Eingaben löschen, wenn ich noch einmal drücken „“ Code Rückkehr alle Eingänge, nicht ein. wie repariere es?JQuery - append entfernen, nachdem

http://jsfiddle.net/3r79hyoL/

$(".multipleField").keyup(function(e) { 
var key = e.which ? e.which : event.keyCode; 
if (key == 110 || key == 188) { 
    e.preventDefault(); 
    var value = $(this).val(); 
    $(this).val(value.replace(",", "")); 
    $(this).first().clone().appendTo(".multipleFields").focus().val(""); 
    event.preventDefault(); 

    $(this).addClass('makeBorder'); 
    replaceAndCopy(); 

} 

if (key == 8) { 
    e.preventDefault(); 
    if ($(".multipleFields").last().val() == "" && $(".multipleField").length > 1) { 
     $(".multipleField").last().remove(); 
     $(".multipleField").last().focus(); 
    } 
} 
}); 

function replaceAndCopy() { 
$(".multipleField").keyup(function(e) { 
    var key = e.which ? e.which : event.keyCode; 
    if (key == 110 || key == 188) { 
     e.preventDefault(); 
     var value = $(this).val(); 
     $(this).val(value.replace(",", "")); 
     $(this).clone().appendTo(".multipleFields").focus().val(""); 

     $(this).addClass('makeBorder'); 

     replaceAndCopy(); 

    } 

    if (key == 8) { 
     if ($(".multipleFields").last().val() == "" && 
$(".multipleField").length != 1) { 
      $(".multipleField:last").remove(); 
      e.preventDefault(); 

      $(".multipleField").last().focus(); 
     } 
    } 
}); 
} 

Antwort

0

Das Problem ist, dass Sie zu jeder Eingabe neuer Event-Listener sind angebracht. Also, wenn Sie gehen zu einem Eingang, der nicht der letzte ist, das Ereignis mehr als einmal ausgelöst wird.

function replaceAndCopy() { 
// Add new event listener to all inputs, instead of the last 
// $(".multipleField").keyup(function(e) { 
// Change to 
$(".multipleField").last().keyup(function(e) { 
    var key = e.which ? e.which : event.keyCode; 
    if (key == 110 || key == 188) { 
     e.preventDefault(); 
     var value = $(this).val(); 
     $(this).val(value.replace(",", "")); 
     $(this).clone().appendTo(".multipleFields").focus().val(""); 

     $(this).addClass('makeBorder'); 

     replaceAndCopy(); 

    } 

    if (key == 8) { 
     if ($(".multipleFields").last().val() == "" && $(".multipleField").length != 1) { 
      $(".multipleField:last").remove(); 
      e.preventDefault(); 

      $(".multipleField").last().focus(); 
     } 
    } 
}); 
+0

Omg, es ist sehr einfach. Vielen Dank! – msniezynski