2016-03-31 7 views
0

Ich versuche, angeklickte ID zu löschen, um den Eingabewert zu entfernen. Zum Beispiel habe ich diesen Eingang <input type='hidden' id='uploadvalues' value="8,9"/> Sie können die Werte 8,9 sehen und die Schaltfläche ist <div class="delete" id="9"></div>. Wenn ich auf id="9" klicke, sollte der Eingabewert 9 entfernt werden. Nach dem Klicken id="9" ==><input type='hidden' id='uploadvalues' value="8"/>Entfernen geklickte ID aus dem Eingabewert

Wie kann ich tun, dass mir jemand beibringen kann?

Demo von CodeCanyon

<div class="container"> 
    <div class="area"> 
     <div class="image"><img src="https://s-media-cache-ak0.pinimg.com/736x/05/2f/1b/052f1b3a2361eb4f3c1385c1fd4f75ed.jpg"></div> 
     <div class="delete" id="8"></div> 
    </div> 
    <div class="area"> 
     <div class="image"><img src="http://www.wallpapermade.com/images/wallpapers/originals/tip-and-oh-laugh-together-home-2015-movie-wallpaper-4612.jpg"></div> 
     <div class="delete" id="9"></div> 
    </div> 
    <input type='hidden' id='uploadvalues' value="8,9"/> 
</div> 

JS

$(document).ready(function(){ 
    $("body").on("click", ".delete", function(){ 
    // Remove clicked id from the input value 
    }); 
}); 
+1

Es wird nicht empfohlen, IDs zu verwenden, die mit einer Zahl beginnen. Ich würde es in ein Attribut "Daten" setzen? – putvande

Antwort

2

Ein Weg, auf dem Ansatz, den Sie wollen, ist

$("body").on("click", ".delete", function(){ 
     var id = this.id, //extract the id from the clicked element 
      values = $('#uploadvalues').val().split(','), // get the existing values in the #uploadvalues element 
      remaining = values.filter(function(val){ // filter out the ones equal to the id of the clicked element 
      return val !== id; 
      }); 

     $('#uploadvalues').val(remaining.join()); // update the changed values 
    }); 
+0

Danke für deine Antwort @ gaby-aka-g-petrioli. Kannst du mir sagen, was denkst du über diese Lösung? Bitte klicken Sie für eine andere Lösung [Demo] (http://codepen.io/shadowman86/pen/oxeKLM) – Azzo

+0

Das Demo funktioniert, aber einige nutzlose Elemente zurückgelassen. Die Schaltfläche ".delete" mit dem Attribut "id" wurde entfernt. So wird es ein Junk-Element, weil es nicht mehr funktionieren kann. Abhängig von der allgemeinen Funktionalität der Seite, die nicht aus Ihrem Code angezeigt wird. –

+0

@ gaby-aka-g-petrioli Hmmm, vielen Dank für Ihre Erläuterungen. – Azzo

2

machen es

$(document).ready(function(){ 
    $("body").on("click", ".delete", function(){ 
    var val = $(this).attr("id"); 
    var values = $("#uploadvalues").val().split(","); 
    var valIndex = values.indexOf(val); 
    if (valIndex > -1) 
    { 
     values.splice(valIndex,1); 
    } 
    $("#uploadvalues").val(values.join(",")) 
    }); 
}); 
1

Versuchen Verwendung von regular expression in diesem Zusammenhang zu machen,

$(document).ready(function() { 
    $("body").on("click", ".delete", function(){ 
    var id = this.id; 
    $("#uploadvalues").val(function(val){ 
     return val.replace(new RegExp(id + "\,|\,"+ id +"$"),"") 
    }); 
    }); 
}); 
1

, wenn Sie auf die Schaltfläche Löschen klicken, wird in der Callback-Funktion die ID schnappen:

var valueToRemove = this.id; 
// now you need to look to see if that value is inside the hidden input 
var valueToRemove = this.id; 

    console.log(valueToRemove); 

    var values = $("#uploadvalues").val(); 

    if(values.indexOf(valueToRemove) >= 0){ 
     $("#uploadvalues").val(values.replace(valueToRemove,"")); 
    } 

auch die zwischenzuspeichern seine beste Praxis dom, also musst du es nicht ständig abfragen.

Ist das, was Sie wollten? und diese Methode löscht das Komma nicht innerhalb der Werte.

Verwandte Themen