yagoTea
yagoTea

Reputation: 51

Adding html textfields in descending order JS

I'm trying to make my textfields stack in descending order when adding a new textfield.

Here is my code:

JS:

var max_fields      = 10; //maximum input boxes allowed
var wrapper         = $(".input_fields_wrap"); //Fields wrapper
var add_button      = $(".add_field_button"); //Add button ID

var x = 1; //initlal text box count
$(add_button).click(function(e){ //on add input button click
    e.preventDefault();
    if(x < max_fields){ //max input box allowed
        x++; //text box increment
        $(wrapper).append('<div><input type="text" class="form-control" name="mytext[]" placeholder="<Menu Name / Transaction ID/ Description>"/> <select><option ></option><option >Add</option></select><a href="#" class="remove_field"> &nbsp; Delete</a></div>'); //add input box

    }
});

$(wrapper).on("click",".remove_field", function(e){ //user click on remove text
    e.preventDefault(); $(this).parent('div').remove(); x--;
})
});

I tried using the js sort method but that didn't work....

Thanks for help in advance!

Upvotes: 0

Views: 143

Answers (1)

fuyushimoya
fuyushimoya

Reputation: 9813

You probably messed up with id and class, as .XXX mean an element with class XXX, while an element with id YYY should use a selector #YYY.

You can either change .add_field_button to #add_field_button or change the button with id add_field_button to have a class add_field_button as what I've done in snippet.

And if you want descending, use .prepend() so the latest added textbox will insert to the front of the container.

$(function() {
var max_fields      = 10; //maximum input boxes allowed
var wrapper         = $(".input_fields_wrap"); //Fields wrapper
var add_button      = $(".add_field_button"); //Add button CLASS

var x = 1; //initlal text box count
$(add_button).click(function(e){ //on add input button click
    e.preventDefault();
    if(x < max_fields){ //max input box allowed
        x++; //text box increment
        $(wrapper).prepend('<div><input type="text" class="form-control" name="mytext[]" placeholder="<Menu Name / Transaction ID/ Description>"/> <select><option ></option><option >Add</option></select><a href="#" class="remove_field"> &nbsp; Delete</a></div>'); //add input box

    }
});

$(wrapper).on("click",".remove_field", function(e){ //user click on remove text
    e.preventDefault(); $(this).parent('div').remove(); x--;
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<button class="add_field_button">Test</button>
<div class="input_fields_wrap"></div>

Upvotes: 2

Related Questions