Ich habe eine versteckte Eingabe:

<input type="hidden" id="paidIds" name="paidIds" value="[]">

Es beginnt mit einem leeren Array als Wert. Ich möchte Elemente hinzufügen und daraus entfernen, kann aber nicht herausfinden, wie.
Dies ist mein bisheriger Code:
ANHÄNGEN:

var $paidIds = $('#paidIds').val();
$paidIds.push($id);
$('#paidIds').val($paidIds);

ZU ENTFERNEN:

var $paidIds = $('#paidIds').val();
var $index = paidIds.indexOf($id);
if($index != -1) {
    $('#paidIds').val().splice($index, 1);
}
$('#paidIds').val($paidIds);

Bisher ist eines der Probleme, dass $paidIds noch nicht definiert ist nach:

var $paidIds = $('#paidIds').val(); 

Ratlos und Google hilft nicht -__-

BEARBEITEN Es hat teilweise funktioniert, im Debugger $paidIds = [4], aber es hat den Wert nicht festgelegt.

var $paidIds = JSON.parse($('#paidIds').val());
$paidIds.push($id);
$paidIds = JSON.stringify($paidIds)
$('#paidIds').val($paidIds);

EDIT2 hat das fehlende # behoben

0
leumas95 7 Dez. 2013 im 16:52

3 Antworten

Beste Antwort

Sie müssen einen String in ein Objekt konvertieren.

Veränderung:

$('paidIds').val()

Zu

$('#paidIds').val()

Versuchen:

var $paidIds = $('#paidIds').val();
if($paidIds != ""){
    $paidIds = JSON.parse($paidIds);
}
1
Hiral 7 Dez. 2013 im 13:00

Ich würde vorschlagen, dass Sie ein Array mit einem data- -Attribut speichern und es mit jQuery.data() lesen, anstatt den Wert in ein Array zu analysieren.

HTML

<input id="paidIds" name="paidIds" data-array="[1,2,3]" value="[1,2,3]">

JS

/* Custom event to handle updates*/    
 $('#paidIds').on('updateArray', function (evt, newVal) {
     var arr = $(this).data('array');
     arr.push(newVal);
     $(this).val(JSON.stringify(arr))
 });

/* Useage*/
 $('button').click(function () {
      var newArrValue=$(this).data('val')
     $('#paidIds').trigger('updateArray', [newArrValue]);
 });

DEMO

1
charlietfl 7 Dez. 2013 im 13:26

Versuchen Sie, JSON.parse zu verwenden, wenn Sie aus der Eingabe lesen, und JSON.stringify, wenn Sie den Wert der Eingabe festlegen

1
Noampz 7 Dez. 2013 im 13:01