Ich arbeite an einem Formular, wo, wenn Benutzer auf "Server hinzufügen" klickt, ein Div-Block wiederholt wird. Ich habe es geschafft, das auszuarbeiten. Aber wenn ich nur einen Serverblock habe, möchte ich das Attribut name="servername"
, und wenn es mehr Elemente gibt, sollte das Attribut name="servername[]"
auf allen Blöcken sein.jQuery Ändern von Attributelementen
Ich versuchte und einzige Sache, die funktioniert, wenn geklickt wird, fügen Server zuerst und zweiter Block wird name="servername[]"
, aber wenn ich noch einmal klicke, bekommt erster Block name="servername[][]"
.
$('#addserver').click(function() {
var num = $('.clone').length; // how many "duplicatable" input fields we currently have
var newNum = new Number(num + 1); // the numeric ID of the new input field being added
// Create the new element via clone(), and manipulate it's ID using newNum value
var newElem = $('#server1').clone().attr('id', 'server' + newNum);
// Insert the new element after the last "duplicatable" input field
$('#server' + num).after(newElem);
// Add [] for PHP array
$('#server' + num + ' input', '#server' + newNum + ' input').attr('name', function() {
return this.name + '[]';
});
// Enable the "remove" button
$('#delserver').attr('disabled','');
// You can only add 5 elements
if (newNum == 5) $('#addserver').attr('disabled','disabled');
});
$('#delserver').click(function() {
var num = $('.clone').length; // how many "duplicatable" input fields we currently have
$('#server' + num).remove(); // remove the last element
// enable the "add" button
$('#addserver').attr('disabled','');
// If only one element remains
if (num-1 == 1) {
// Remove [] because it's not php array anymore
$('#server1 input').attr('name', function() {
s = this.name.substring(0, this.name.length - 2);
return s;
});
// Disable "remove" button
$('#delserver').attr('disabled','disabled');
}
});
$('#delserver').attr('disabled','disabled');
Hier html Beispiel:
<div class="clone" id="server1">
<input type="text" name="servername" size="40" />
</div>
Ich brauche [] wegen der PHP-Array, aber wenn Benutzer einen Server eingeben und es wird [] im Namen funktioniert es nicht.
Und er muss auch einen anderen Logikzweig haben, wenn es nur einen Server gibt. – Gazillion