Prvi ste put ovdje? Pročitajte faq i registrirajte se.
x
  • Registracija
Dobrodošli, ovdje možete postavljati pitanja vezana za problematiku programiranja. Da bi postavili pitanje nije potrebna registracija :)

149 pitanja

181 odgovora

158 komentara

2,222 korisnika

Zadnje značke

Potvrđeni korisnik
HarrisEusebi...
Potvrđeni korisnik
AntoniettaFe...
Potvrđeni korisnik
WOBJacinto80...
Potvrđeni korisnik
TameraCarter...
Potvrđeni korisnik
AndreasHeine...

Resetiranje obrasca na početne vrijednosti - javascript

+7 glasova

U tablici imam nekolliko linkova za akcije.

Npr. postoji link za kreiranje novog zapisa koji zapravo potegne jQuery UI dialog sa obrascem kojeg nakon popunjavanja korisnik može spremiti.

Taj isti obrazac mi služi i za ažuriranje zapisa. Problem je taj što se sve dešava bez osvježavanja stranice (ajax-om :D) i nakon/prije npr. novog upisa ili ažuriranja moram resetirati obrazac na početne postavke.

$('a.polaznik').click(function(){
    $('form#polaznici input#oib').val('');
    $('form#polaznici input#email').val('');
    $('form#polaznici input#ime').val('');
    $('form#polaznici input#prezime').val('');
    $('form#polaznici input#grupa').val('2b');
    $('form#polaznici input#grad').val('Zagreb');

    $('#polaznik').dialog('open');

    $.ajax({
        'url': '/polaznici/dohvati',
        'data': {'polaznik': $(this).attr("id")},
        'dataType': 'json',
        'type': 'GET',
        'success': function(data) {
            $('form#polaznici input#oib').val(data['oib']);
            $('form#polaznici input#email').val(data['email']);
            $('form#polaznici input#ime').val(data['ime']);
            $('form#polaznici input#prezime').val(data['prezime']);
            $('form#polaznici input#grupa').val(data['grupa']);
            $('form#polaznici input#grad').val(data['grad']);
        }
    });
    return false;
});

Primjetite da za "grupa" i "grad" postoje default vrijednosti. S obzirom da je ovo samo mali dio ovo mi se čini kao spaghetti kod koja je najjednostavnija metoda a da ne moram resetirati svako polje posebno jer ima nekih 20 polja u ovoj tablici a osim te imam još nekoliko desetaka drugih.

Upit Tra 23, 2012 anonimno  
   

2 Odgovori

+3 glasova
 
Najbolji odgovor

Da malo proširim odgovor koji je napisao purifier:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript">
    //jQuery
    $(document).ready(function() {
        //poništi nakon što je stranica učitana
        $('form#obrazac')[0].reset();
        //reset na klik
        $('#jquery_reset').click(function(){
            $('form#obrazac')[0].reset();
        });
        //clear na klik
        $('#jquery_clear').click(function(){
            $('form#obrazac').children().each(
                function(){
                    $(this).val('');
                }
            );
        });
    });

    //javascript
    function resetiraj(obrazac){
        obrazac.reset();
    }

    function ponisti(obrazac){
        var str = '';
        var elem = obrazac.elements;
        for(var i = 0; i < elem.length; i++)
        {
            switch(elem[i].type){
                case 'text':
                    elem[i].value = '';
                break;
                default:
                break;
            }
        } 
    }
</script>
</head>
<body>
<form id="obrazac">
    <input type="text" id="tekst" value="Početna vrijednost">
    <input type="reset" value="Resetiraj(HTML)">
    <input type="button" value="Resetiraj(javascript)" onClick="this.form.reset()" />
    <input type="button" value="Resetiraj(funkcija)" onClick="resetiraj(this.form);" />
    <input type="button" value="Poništi(funkcija)" onClick="ponisti(this.form);" />
    <input type="button" id="jquery_reset" value="Resetiraj(jQuery)" />
    <input type="button" id="jquery_clear" value="Poništi(jQuery)" />
</form>
</body>
</html>
Odgovoreno Tra 23, 2012 ergonom (193)  
+2 glasova

Rekao bih da možeš jednostavno napraviti ovo:

Ako je ovo obrazac:

<form id="obrazac" method="GET" action="">
    <input type="text" id="tekst" value="Početna vrijednost" />
    <input type="submit" id="submit" />
    <input type="button" value="Resetiraj" onClick="this.form.reset()" />    
    <input type="button" value="Resetiraj" onClick="funkcija_resetiraj()" />
</form>

Ovako bi ga resetirao:

<script type="text/javascript">
    // ako koristiš jQuery
    $("#obrazac")[0].reset();

    //ili funkcija u čistom javascript-u
function funkcija_resetiraj(){
    document.getElementById("obrazac").reset();
}
</script>

Ovo će sve poništiti na početne vrijednosti poštujući value="default vrijednost" atribut.

Odgovoreno Tra 23, 2012 purifier (361)