簡體   English   中英

jQuery-刪除后追加

[英]Jquery - append after remove

當我使用退格鍵時,按下鍵“,”后我會追加新的輸入,但是最后一次輸入時刪除所有輸入后,再次按下“,”代碼會返回所有輸入,而不是一個。 如何解決?

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();
        }
    }
});
}

問題是您要將新的事件偵聽器附加到每個輸入。 因此,當您返回的輸入不是最后一個時,該事件將被觸發多次。

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();
        }
    }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM