2016-05-04 5 views
0

私は他のすべてのケースを読んだが、運がなかった。私は自分のJqueryグリッドをやっています。保存ボタンがクリックされたときに関数をトリガーしようとしています(他のjquery関数が動作しています)。ここにjavascriptファイル "newsletter.js"が含まれています... jqueryとbootstrapファイルはonClick()javascript関数が認識されない、ReferenceError:関数が定義されていない、ドキュメントを使用してレディ

$(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; 

    } 

}); 

これは動作しない一部です:

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

そのモジュール用のPHPのsymfony 1.4の設定ファイル...

<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"); 
?> 

は、ここに私の.jsファイルがあります私はJQueryを使ってみたイベントをクリックして、私はボタンではなく、表示されるはずですアラートをクリックすると、同じエラーを取得しておいてください。

ReferenceError: guardarNewsletter is not defined 


<!DOCTYPE html> 

このグリッド上の編集ボタンは、jQueryの私を認識していない理由を私は知らない取り組んでいます関数。私は関数が呼び出されるタイミングの問題かもしれませんが、この場合はわかりません。基本的に私はDBから行を持ってきて、可視化のために1つを作成し、編集のために隠しているものを作成します。編集フィールドが表示されますが、そのエラーを保存したいときに表示されます。この問題の光?

+1

関数のスコープは、ドキュメントレディ関数内で分離されており、グローバルではありません。 onclickにはグローバル関数が必要です。 – Hoyen

答えて

2

はあなたのコードは、関数を定義しているが、それはグローバル関数では使用できません。ありがとうございました

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

これは答えです....ありがとう、私の友人 – Juan

関連する問題