Si tiene un JSF <h:commandLink>
(que usa el evento onclick
de <a>
para enviar el formulario actual), ¿cómo ejecuta JavaScript (como solicitar la confirmación de eliminación) antes de realizar la acción?¿Cómo puedo ejecutar Javascript antes de realizar una acción JSF <h: commandLink>?
Respuesta
<h:commandLink id="myCommandLink" action="#{myPageCode.doDelete}">
<h:outputText value="#{msgs.deleteText}" />
</h:commandLink>
<script type="text/javascript">
if (document.getElementById) {
var commandLink = document.getElementById('<c:out value="${myPageCode.myCommandLinkClientId}" />');
if (commandLink && commandLink.onclick) {
var commandLinkOnclick = commandLink.onclick;
commandLink.onclick = function() {
var result = confirm('Do you really want to <c:out value="${msgs.deleteText}" />?');
if (result) {
return commandLinkOnclick();
}
return false;
}
}
}
</script>
Otras acciones de Javascript (como la validación de formulario de entrada, etc.) podrían llevarse a cabo mediante la sustitución de la llamada a confirm()
con una llamada a otra función.
Todavía puede usar onclick. El JSF render kit specification (consulte Comportamiento de codificación) describe cómo debe manejarlo el enlace. Aquí está la parte importante (lo que hace que para onclick):
var a=function(){/*your onclick*/}; var b=function(){/*JSF onclick*/}; return (a()==false) ? false : b();
Por lo que su función no será aprobada el objeto de evento (que no es el navegador cruz fiable de todos modos), pero volviendo verdadero/falso voluntad cortocircuito en el sumisión.
No puedo agregar un atributo onclick a
En JSF 1.2 puede especificar eventos onclick.
Además, otras bibliotecas como MyFaces o IceFaces implementan el controlador "onclick".
Lo que se necesita hacer a continuación es simplemente:
<h:commandLink action="#{bean.action}" onclick="if(confirm('Are you sure?')) return false;" />
Nota: no se puede simplemente hacer return confirm(...)
ya que esto bloqueará el resto del JavaScript en el evento de clic suceda, lo que haría de manera efectiva evite que su acción suceda sin importar lo que devuelva el usuario!
Si desea ejecutar algo antes de que se publique el formulario, para confirmación, por ejemplo, intente con el evento de formulario en Enviar. Algo así como:
myform.onsubmit = function(){confirm("really really sure?")};
Esto nunca funcionó para mí,
onclick="if(confirm('Are you sure?')) return false;" />
pero esto hizo
onclick="if(confirm(\"Are you sure?\"))return true; else return false;"
No puedo agregar un atributo onclick a
@ grant-wagner, me doy cuenta que son muchos años pero tal vez la implementación que usaste en ese momento se rompió – akostadinov
se puede simplificar como esto
onclick="return confirm('Are you sure?');"
gracioso que las construcciones 'if' sean sugeridas en todas las publicaciones a continuación por desarrolladores con alguna experiencia ... y aún más divertido I Estoy aprendiendo de ellos :) – akostadinov
var deleteClick;
var mess="xxx";
function assignDeleteClick(link) {
if (link.onclick == confirmDelete) {
return;
}
deleteClick = link.onclick;
link.onclick = confirmDelete;
}
function confirmDelete() {
var ans = confirm(mess);
if (ans == true) {
return deleteClick();
} else {
return false;
}
}
usa este código para jsf 1.1.
Esto funcionó para mí:
<h:commandButton title="#{bundle.NewPatient}" action="#{identifController.prepareCreate}"
id="newibutton"
onclick="if(confirm('#{bundle.NewPatient}?'))return true; else return false;"
value="#{bundle.NewPatient}"/>
Eso se puede simplificar como 'onclick =" return confirm ('¿Estás seguro?') "'. No es necesario verificar un valor booleano para devolver un valor booleano. Solo devuélvalo directamente. – BalusC
¿Hay alguna manera fácil en Primefaces de implementar lo anterior utilizando '
- 1. JSF - ¿Cómo implemento un JavaScript "Estás seguro?" solicitar un <h: CommandButton>
- 2. PHP, espere 5 segundos antes de ejecutar una acción
- 3. JSF: h: dataTable vs h: panelGrid
- 4. ¿Cómo realizar una acción cada 5 resultados?
- 5. Cómo incluir archivos JavaScript por h: ¿outputScript?
- 6. Acción JSF desde onChange
- 7. Esperar antes de activar una función para ejecutar en JavaScript
- 8. Ejecutar código antes de la acción del controlador
- 9. cómo hacer \ n trabajar en <h: inputTextarea>
- 10. ¿Cómo puedo crear una Acción <T> en F #?
- 11. JSF h: orden de outputScript y PrimeFaces jQuery
- 12. Realizar petición GET antes de salir de la página - Javascript
- 13. Jquery UI ordenable - realizar una acción ANTES de iniciar el evento de incendios
- 14. Cómo fusionar celdas (colspan) usando jsf h: panelGrid?
- 15. ¿Cómo puedo implementar "versiones de CSS" (para resolver problemas de caché) usando JSF 2 h: outputStylesheet?
- 16. ¿Cómo pasar una cadena de acción a un componente compuesto JSF 2?
- 17. C#: ¿Cómo se asegura de que se seleccione una fila o elemento en ListView antes de realizar una acción?
- 18. Cómo crear un nuevo hilo para ejecutar una acción <T>
- 19. JSF <h: outputFormat>: use valores de matriz como parámetros
- 20. JSF F: Ajax vs oyente acción commandButton
- 21. ¿Cuál es el significado de "h" en "<% = h [...]%>"?
- 22. Ejecutar JavaScript en un UIWebView antes de ejecutar cualquier otro JavaScript
- 23. Acción <T> o Acción <in T>?
- 24. Abre una nueva ventana mediante POST usando h: commandButton
- 25. ¿Cómo puedo ejecutar la función Javascript antes de cargar la página?
- 26. Cómo ejecutar una función de javascript antes de la devolución de datos del botón asp.net
- 27. JSF/Facelets: el archivo CSS no se reconoce con la etiqueta <h: outputStylesheet>
- 28. Precargar y ejecutar jQuery/javascript antes de ver la página
- 29. ¿Cómo puedo obtener cierto código para ejecutar antes de cada acción de controlador único en ASP.NET MVC 2?
- 30. ¿Cómo puedo realizar la codificación H.264 acelerada por hardware y la decodificación para la transmisión?
relacionadas: http://stackoverflow.com/questions/4571488/confirmation-on-submit – BalusC
@ BalázsMáriaNémeth ¿Por favor me explique la forma en que no lo son? – EJP