2016-05-04 6 views
0

Ich habe alle anderen Fälle gelesen und ich hatte kein Glück. Ich mache mein eigenes Jquery-Gitter. Ich versuche, eine Funktion auszulösen, wenn eine Speicherschaltfläche angeklickt wird (andere jquery Funktionen funktionieren) ..... Hier ist, wo ich die Javascript-Datei "newsletter.js" einschließe ... Die jquery und Bootstrap-Dateien werden von geladen die Konfigurationsdatei auf pHP symfony 1.4 für das Modul ...onClick() JavaScript-Funktion nicht erkannt, ReferenceError: Funktion ist nicht definiert, mit dem Dokument bereit

<body><div class="col-lg-7 col-lg-7-bc"> 


    <h3 style="font-size:20px"> JURISPRUDENCIA</h3> 

    <p> 

     </br> 

    </p> 

     <div class="col-xs-6 col-sm-4 item ico "><a id="newsletters" target="_blank">Newsletters |</a></div> 

     <div class="col-xs-6 col-sm-4 item ico "><a id="fallos" target="_blank">Navegar |</a></div> 

     <div class="col-xs-6 col-sm-4 item ico"><a id="cuadernos_mpd" target="_blank">Cuadernos del MPD</a></div> 


     <div id="grilla"></div> 




</div> 

<?php use_javascript("jurisprudencia/newsletter.js"); 
    use_javascript("jurisprudencia/funciones_grilla.js"); 
?> 

Hier ist meine JS-Datei:

$(document).ready(function(){ 

    //API methods newsletters 
    //guardar 

    function guardarNewsletter(id){ 

     alert(id); 

     /*$("#fieldset_"+id).show(); 
     $("#fieldset_hidden_"+id).hide(); 



      $.ajax({ 
        url:"/newsletter/guardarNewsletter", 
        data: newsletter.serialize(), 
        success:function(data) { 
        alert("Row Guardada"); 
        } 
       });*/ 

    } 


    $("#newsletters").click(function(){ 
     $.getJSON("/newsletter/getNewsletters", function(result){ 

      var grid="<br><table id='newsletter_grid'>"; 
      grid+="<thead><tr><th></th><th>Año</th><th>Mes</th><th>Quincena</th><th></th><th></th><th>Publicado</th></tr></thead>"; 

      grid+="<tr><td><button id='agregar_button'>Nuevo</button></td></tr>"; 

      grid+="<tr id='nuevo_field' style='display:none'>"; 

      grid+=crearNuevaRow(); 

      grid+="</tr>"; 



      $.each(result, function(i, elem){ 

       //show view fieldset, son los campos que se muestran para visualizar los datos 

       grid+="<tr id='fieldset_"+elem.id+"'>"; 

       grid+=mostrarElementosViewMode(elem);    

       grid+="</tr>"; 


       //hidden field 

       grid+="<tr id='fieldset_hidden_"+elem.id+"' style='display:none'>"; 

       grid+=crearRowHidden(elem); 

       grid+="</tr>"; 


      }); 

      grid+="</table>"; 

      $("#grilla").html(grid); 


     }); 




    }); 

    //crea los elementos editables con el value de su correspondiente existente en modo View o se usa para crear un elemento nuevo 

    function crearRowHidden(elem){ 

     var nuevoHiddenFieldSet=""; 

     nuevoHiddenFieldSet+="<td><input type='hidden' value='"+elem.id+"'></td>"; 

     nuevoHiddenFieldSet+="<td><input name='anio' value='"+elem.anio+"'/></td>"; 

     nuevoHiddenFieldSet+="<td><input name='anio' value='"+elem.mes+"'/></td>"; 

     nuevoHiddenFieldSet+="<td><input name='quincena' value='"+elem.quincena+"'/></td>"; 

     nuevoHiddenFieldSet+="<td><button value='Guardar' name='guardar_newsletter' id='guardar_newsletter_"+elem.id+"' onclick='guardarNewsletter("+elem.id+")'>Guardar</td>"; 

     nuevoHiddenFieldSet+="<td></td>"; 

     if(elem.publicado==1){ 
      nuevoHiddenFieldSet+="<td><input type='checkbox' id='publicado_"+elem.id+"' name='publicado' checked='checked'></td>"; 
     }else{ 
      nuevoHiddenFieldSet+="<td><input type='checkbox' id='publicado_"+elem.id+"' name='publicado'></td>"; 
     } 
     return nuevoHiddenFieldSet; 

    } 

    function crearNuevaRow(){ 

     var nuevaRow=""; 

     nuevaRow+="<td><input type='hidden' value=''></td>"; 

     nuevaRow+="<td><input name='anio' value=''/></td>"; 

     nuevaRow+="<td><input name='anio' value=''/></td>"; 

     nuevaRow+="<td><input name='quincena' value=''/></td>"; 
    //ver que ponerle en id 
     nuevaRow+="<td><button value='Guardar' name='guardar_newstletter' id=''>Guardar</td>"; 

     nuevaRow+="<td></td>"; 
     //ver que ponerle en id 
     nuevaRow+="<td><input type='checkbox' id='' name='publicado'></td>"; 

     return nuevaRow; 

    } 

    //muestra los elementos del listado que se trae de la base de datos 

    function mostrarElementosViewMode(elem){ 

     var elemento; 

     elemento+="<td><input type='hidden' value='"+elem.id+"'></td>"; 

     elemento+="<td>"+elem.anio+"</td>"; 

     elemento+="<td>"+elem.mes+"</td>"; 

     elemento+="<td>"+elem.quincena+"</td>"; 

     elemento+="<td><button id='editar_"+elem.id+"' value='Editar' onclick='muestraEditarFields(\""+elem.id+"\")'>Editar</td>"; 

     elemento+="<td><button id='eliminar_newsletter_"+elem.id+"' value='Eliminar'>Eliminar</td>"; 

     if(elem.publicado == 1){ 
      elemento+="<td><input type='checkbox' id='publicado_"+elem.id+"' name='publicado' checked='checked'></td>"; 
     } else { 
      elemento+="<td><input type='checkbox' id='publicado_"+elem.id+"' name='publicado'></td>"; 
     } 

     return elemento; 

    } 

}); 

Dies ist der Teil, das nicht funktioniert:

nuevoHiddenFieldSet+="<td><button value='Guardar' name='guardar_newsletter' id='guardar_newsletter_"+elem.id+"' onclick='guardarNewsletter("+elem.id+")'>Guardar</td>"; 

Ich habe versucht, eine Jquery zu verwenden Ereignis klicken und ich erhalte immer die gleichen Fehler, wenn ich auf die Schaltfläche klicken, nicht auf die Warnung, die zeigen soll:

ReferenceError: guardarNewsletter is not defined 


<!DOCTYPE html> 

die Schaltfläche Bearbeiten in diesem Raster funktioniert, damit ich weiß nicht, warum JQuery nicht erkennt meine Funktion. Ich habe gelesen, das könnte ein Timing-Problem sein, wenn die Funktion aufgerufen wird, aber ich bin mir in diesem Fall nicht sicher. Im Grunde genommen bringe ich Zeilen aus der DB, erzeuge eine für die Visualisierung und eine versteckte für die Bearbeitung, die Bearbeitungsfelder erscheinen, aber wenn ich diesen Fehler speichern möchte, kommt der Fehler auf. Irgendwelche Licht in dieser Angelegenheit ?. Vielen Dank

+1

Der Gültigkeitsbereich der Funktion ist innerhalb der Dokumentbereitschaftsfunktion isoliert und nicht global. Der Onclick benötigt eine globale Funktion. – Hoyen

Antwort

2

Ihr Code die Funktion definiert, aber es ist nicht im globalen Funktionen

function guardarNewsletter(id){ 

    alert(id); 

    /*$("#fieldset_"+id).show(); 
    $("#fieldset_hidden_"+id).hide(); 



     $.ajax({ 
       url:"/newsletter/guardarNewsletter", 
       data: newsletter.serialize(), 
       success:function(data) { 
       alert("Row Guardada"); 
       } 
      });*/ 

} 
$(document).ready(function(){ 

//API methods newsletters 
//guardar 


$("#newsletters").click(function(){ 
    $.getJSON("/newsletter/getNewsletters", function(result){ 

     var grid="<br><table id='newsletter_grid'>"; 
     grid+="<thead><tr><th></th><th>Año</th><th>Mes</th><th>Quincena</th><th></th><th></th><th>Publicado</th></tr></thead>"; 

     grid+="<tr><td><button id='agregar_button'>Nuevo</button></td></tr>"; 

     grid+="<tr id='nuevo_field' style='display:none'>"; 

     grid+=crearNuevaRow(); 

     grid+="</tr>"; 



     $.each(result, function(i, elem){ 

      //show view fieldset, son los campos que se muestran para visualizar los datos 

      grid+="<tr id='fieldset_"+elem.id+"'>"; 

      grid+=mostrarElementosViewMode(elem);    

      grid+="</tr>"; 


      //hidden field 

      grid+="<tr id='fieldset_hidden_"+elem.id+"' style='display:none'>"; 

      grid+=crearRowHidden(elem); 

      grid+="</tr>"; 


     }); 

     grid+="</table>"; 

     $("#grilla").html(grid); 


    }); 




}); 

//crea los elementos editables con el value de su correspondiente existente en modo View o se usa para crear un elemento nuevo 

function crearRowHidden(elem){ 

    var nuevoHiddenFieldSet=""; 

    nuevoHiddenFieldSet+="<td><input type='hidden' value='"+elem.id+"'></td>"; 

    nuevoHiddenFieldSet+="<td><input name='anio' value='"+elem.anio+"'/></td>"; 

    nuevoHiddenFieldSet+="<td><input name='anio' value='"+elem.mes+"'/></td>"; 

    nuevoHiddenFieldSet+="<td><input name='quincena' value='"+elem.quincena+"'/></td>"; 

    nuevoHiddenFieldSet+="<td><button value='Guardar' name='guardar_newsletter' id='guardar_newsletter_"+elem.id+"' onclick='guardarNewsletter("+elem.id+")'>Guardar</td>"; 

    nuevoHiddenFieldSet+="<td></td>"; 

    if(elem.publicado==1){ 
     nuevoHiddenFieldSet+="<td><input type='checkbox' id='publicado_"+elem.id+"' name='publicado' checked='checked'></td>"; 
    }else{ 
     nuevoHiddenFieldSet+="<td><input type='checkbox' id='publicado_"+elem.id+"' name='publicado'></td>"; 
    } 
    return nuevoHiddenFieldSet; 

} 

function crearNuevaRow(){ 

    var nuevaRow=""; 

    nuevaRow+="<td><input type='hidden' value=''></td>"; 

    nuevaRow+="<td><input name='anio' value=''/></td>"; 

    nuevaRow+="<td><input name='anio' value=''/></td>"; 

    nuevaRow+="<td><input name='quincena' value=''/></td>"; 
//ver que ponerle en id 
    nuevaRow+="<td><button value='Guardar' name='guardar_newstletter' id=''>Guardar</td>"; 

    nuevaRow+="<td></td>"; 
    //ver que ponerle en id 
    nuevaRow+="<td><input type='checkbox' id='' name='publicado'></td>"; 

    return nuevaRow; 

} 

//muestra los elementos del listado que se trae de la base de datos 

function mostrarElementosViewMode(elem){ 

    var elemento; 

    elemento+="<td><input type='hidden' value='"+elem.id+"'></td>"; 

    elemento+="<td>"+elem.anio+"</td>"; 

    elemento+="<td>"+elem.mes+"</td>"; 

    elemento+="<td>"+elem.quincena+"</td>"; 

    elemento+="<td><button id='editar_"+elem.id+"' value='Editar' onclick='muestraEditarFields(\""+elem.id+"\")'>Editar</td>"; 

    elemento+="<td><button id='eliminar_newsletter_"+elem.id+"' value='Eliminar'>Eliminar</td>"; 

    if(elem.publicado == 1){ 
     elemento+="<td><input type='checkbox' id='publicado_"+elem.id+"' name='publicado' checked='checked'></td>"; 
    } else { 
     elemento+="<td><input type='checkbox' id='publicado_"+elem.id+"' name='publicado'></td>"; 
    } 

    return elemento; 

} 

});

+0

Das ist die Antwort .... Danke mein Freund – Juan

Verwandte Themen