2012-09-27 66 views
0

我無法調用我的javascript函數。我已經在onChange SelectMenu中試過並標記了ajax,但都發出以下消息:函數未定義 - jsf/javascript

消息:'sumarFilas'未定義。

追隨功能和JSF與函數調用:

<script language="javascript"> 

    var numfilasRelacion=1; 
    var form=document.theForm; 
    var valorNRN=""; 

    function sumaRelacion() { 

    var miTablaRelacion = document.getElementById("form:j_idt115_panel"); 

    var fila = document.createElement("tr"); 
    var celda1 = document.createElement("td"); 
    var celda2 = document.createElement("td"); 
    var celda3 = document.createElement("td"); 
    var celda4 = document.createElement("td"); 
    var celda5 = document.createElement("td"); 

    numfilasRelacion=miTablaRelacion.getElementsByTagName("tr").length + 1 ; 

    celda1.innerHTML = "<p:inputText id='inicioRango' />"; 
    celda2.innerHTML = "<p:inputText id='finalRango' />"; 
    celda3.innerHTML = "<p:inputText id='numeroGrupoId' />"; 
    celda4.innerHTML = "<p:inputText id='checkpto'/>"; 
    celda5.innerHTML = "<p:inputText id='checkptoH'/>"; 
    fila.appendChild(celda1); 
    fila.appendChild(celda2); 
    fila.appendChild(celda3); 
    fila.appendChild(celda4); 
    fila.appendChild(celda5); 
    miTablaRelacion.appendChild(fila); 
    } 

    function restarFilas(rangos) { 
    var miTablaRelacion = document.getElementById("form:j_idt115_panel"); 
    var i = numfilasRelacion-1; 
    do{ 
     miTablaRelacion.deleteRow(i); 
     numfilasRelacion=numfilasRelacion-1; 
     i=i-1; 
     } 
    while (miTablaRelacion.rows.length != rangos) 
    } 

    function sumarFilas(){ 
     alert("sumarFilas"); 
    var numfilas=numfilasRelacion; 
    var rangos = document.getElementById("form:j_idt115_panel").value; 
    if(rangos>numfilas){         
     for(var i=0;rangos-numfilas>i;i++){ 
     sumaRelacion(); 
     } 
    }else{ 
     restarFilas(rangos); 
    } 
    } 
</script> 

JSF的:

<h:outputText value="Nº Intervalo a Portar:" /> 
<p:selectOneMenu value="#{bean.parametro.intervalo}"> 
    <f:selectItem itemLabel="1" itemValue="1" /> 
    <f:selectItem itemLabel="2" itemValue="2" /> 
    <f:selectItem itemLabel="3" itemValue="3" /> 
    <f:selectItem itemLabel="4" itemValue="4" /> 
    <f:selectItem itemLabel="5" itemValue="5" /> 
    <f:selectItem itemLabel="6" itemValue="6" /> 
    <f:selectItem itemLabel="7" itemValue="7" /> 
    <f:selectItem itemLabel="8" itemValue="8" /> 
    <f:selectItem itemLabel="9" itemValue="9" /> 
    <f:selectItem itemLabel="10" itemValue="10" /> 
    <f:ajax event="change" onevent="sumarFilas"></f:ajax>  

</p:selectOneMenu> 

<h:panelGrid columns="6" style="margin-bottom:10px" cellpadding="5" 
    id="pgrid121"> 

    <h:outputText value="Portabilidade Grupo" id="pg1" /> 
    <p:selectBooleanCheckbox 
     value="#{bean.parametro.portabilidadeGrupo}" id="pg11" /> 

    <h:outputLabel for="numInicial1" value="Nº Inicial Int:" id="ni1" /> 
    <p:inputText id="numInicial1" value="#{bean.parametro.numInicial}" /> 

    <h:outputLabel for="numFinal1" value="Nº Final Int:" id="nf1" /> 
    <p:inputText id="numFinal1" value="#{bean.parametro.numFinal}" /> 

    <h:outputLabel for="idGrupo1" value="Id do Grupo:" id="ig1" /> 
    <p:inputText id="idGrupo1" value="#{bean.parametro.idgrupo}" /> 

    <h:outputText value="PTO" id="pt1" /> 
    <p:selectBooleanCheckbox value="#{bean.parametro.pto}" id="pt11" /> 

</h:panelGrid> 

謝謝!

+0

您能否正確縮進您的代碼? – Bergi

+0

它似乎很好。你的腳本是否被執行?使用'

1

試圖改變自己的功能如下

function sumarFilas(data){ 
    if (data.status === 'success') { 
     alert("sumarFilas"); 
     var numfilas=numfilasRelacion; 
     var rangos = document.getElementById("form:j_idt115_panel").value; 
     if(rangos>numfilas){         
      for(var i=0;rangos-numfilas>i;i++){ 
      sumaRelacion(); 
      } 
     }else{ 
      restarFilas(rangos); 
     } 
    } 
} 

讓我知道它是否適合你...

此外,看一看這一個BalusC答案

ajax call in jsf 2.0 (myfaces), the onevent javascipt function in the ajax tag gets called before the rendering is complete

+0

這確實回答了最初陳述的具體問題。函數參數必須被定義。但是他的方法在這個錯誤消息之外還包含許多更多的問題。 – BalusC