Pagina 1 din 1

problema rulare jquery sau problema de logica?

Scris: Vin Apr 04, 2014 3:27 pm
de Birkoff
Salut

Am si eu o problema, incerc sa generez din jquery niste campuri html care contin si un link de forma
<a href='#' onclick="remove_cell(123)">clic aici pentru stergere celula</a>

problema e ca nu am reusit sa fac sa mearga functia de la onclick fara sa ia si a href-ul (adica ma intereseaza cand dau click sa execute functia remove_cell() dar sa nu ma redirecteze la a href="#" (un fel de preventdefault))

codul demo l-am pus la http://jsfiddle.net/ggn6L/7/

ceva idei de abordare a problemei?

Re: problema rulare jquery sau problema de logica?

Scris: Vin Apr 04, 2014 9:22 pm
de virus
Salut :)
1)

Cod: SelectaĊ£i tot

<html>

<script type="text/javascript" src="js/jquery-1.9.1.js"></script>
<div id="content">
    <form action="blabla" method="post">
        <a href="#" id="genereaza" onclick="genereaza(); return false;">click aici pentru generare</a>
        <span id="tr_cell_0"></span>
        <input name="total_cels" id="total_cels" type="hidden" value="0">
    </form>
</div>

<script>
<!-- $(document).ready(function() { -->
    <!-- $('#genereaza').click(function(event) { -->
   function genereaza ()
   {
        <!-- event.preventDefault; -->
        var total_cels = parseInt( $('#total_cels').val() );
        var new_cell = total_cels + 1;
        var content_cell = generate_cell(new_cell);
        $("#tr_cell_"+total_cels).append(content_cell);
        $("#tr_cell_"+total_cels).after("<span id='tr_cell_"+new_cell+"'></span>");
        $("#total_cels").val(new_cell);
   }
    <!-- }); -->
<!-- }); -->

function generate_cell(new_cell) {
    return "<br><a href='#' onClick='remove_cell("+new_cell+"); return false;'>click aici pentru a sterge celula "+new_cell+"</a>" +
        "<br><label for='label_"+new_cell+"'>Label celula "+new_cell+"</label>" +
        "<input name='label_"+new_cell+"' type='text' id='label_"+new_cell+"'>";
}

function remove_cell(id_cell) {
    alert(id_cell);
    //$( "#tr_cell_"+id_cell).remove();
}
</script>
</html>


2) Daca nu vrei sa mai faci inca o functie ->
event.preventDefault; ==> event.preventDefault();
In functia generate_cell() tot trebuie sa pui return false la onclick.

Nici nu mai e nevoie de acel '#' la href.

Re: problema rulare jquery sau problema de logica?

Scris: Vin Apr 04, 2014 9:32 pm
de Birkoff
in afara ca ai pus genereaza() intr-o functie nu inteleg ce ai facut in plus?

pe mine ma intereseaza sa functioneze linia asta

return "<br><a href='#' onClick='remove_cell("+new_cell+"); return false;'>click aici pentru a sterge celula "+new_cell+"</a>" +

problema e ca in teste nu imi ia return false ci imi ia direct a href-ul...
vezi in exemplul meu cum functioneaza si testeaza acolo, eu nu am reusit

Re: problema rulare jquery sau problema de logica?

Scris: Vin Apr 04, 2014 10:00 pm
de virus
Am facut functia genereaza() ca sa o pun la onclick la linkul acela.

Am facut test pe jsfiddle, dar acolo nu imi pune # la url, de aceea am pus codul la mine pe localhost ca sa testez.

La click, pe 'click aici pentru generare' iti adauga inca un input, iar la click pe 'click aici pentru a sterge celula' iti afiseaza un alert deocamdata.
Asta si ar trebui sa faca...

Ca sa nu mai schimbe url-ul in browser (sa puna acel #) pui 'return false;' la onclick.
La actiunea de onlclick din jquery trebuie sa modifici event.preventDefault; in event.preventDefault();

Cand dai click pe primul link iti pune '#' in browser daca pui event.preventDefault() ?

EDIT: Pe jsfiddle da o eroare de JS. Zice ca nu exista functia remove_cell();

Re: problema rulare jquery sau problema de logica?

Scris: Vin Iul 11, 2014 11:57 pm
de sim72
Salutare,

Daca nu ma insel, din punctul de vedere al <a href='#' onClick='remove_cell("+new_cell+"); return false ...... remove_cell() nu exista.
In jsfiddle mi-a mers codul de mai jos.



Cod: SelectaĊ£i tot

$(document).ready(function() {
    $('#genereaza').click(function(event) {
        event.preventDefault;
        var total_cels = parseInt( $('#total_cels').val() );
        var new_cell = total_cels + 1;
        var content_cell = generate_cell(new_cell);
        $("#tr_cell_"+total_cels).append(content_cell);
        $("#tr_cell_"+total_cels).after("<span id='tr_cell_"+new_cell+"'></span>");
        $("#total_cels").val(new_cell);
    });
   
       
    $("body").on('click','.rm',function(evt){
        console.log(evt)
        console.log($(this).data('cell'))
       
    });
   
   
});

function generate_cell(new_cell) {

// Am adaugat la link class='rm' si 
// data-cell='new_cell'  pentru a transmite informatia mai departe

    return "<br><a href='#' class='rm' data-cell='"+new_cell+"' >click aici pentru a sterge celula "+new_cell+"</a>" +
        "<br><label for='label_"+new_cell+"'>Label celula "+new_cell+"</label>" +
        "<input name='label_"+new_cell+"' type='text' id='label_"+new_cell+"'>";
}