Desejo que este link tenha uma caixa de diálogo JavaScript que pergunte ao usuário “ Tem certeza? S / N ".
<a href="delete.php?id=22">Link</a>
Se o usuário clicar em “Sim”, o link deverá carregar, se “Não” nada acontecerá.
Eu sei como fazer isso em formulários, usando a onclick
execução de uma função que retorna true
ou false
. Mas como faço isso com um <a>
link?
javascript
html
dom-events
Christoffer
fonte
fonte
Respostas:
Manipulador de eventos embutido
Da maneira mais simples, você pode usar a
confirm()
função em umonclick
manipulador embutido .Manipulação avançada de eventos
Mas normalmente você gostaria de separar seu HTML e Javascript , então sugiro que você não use manipuladores de eventos em linha, mas coloque uma classe no seu link e adicione um ouvinte de evento.
Este exemplo só irá funcionar em navegadores modernos (para IEs mais velhos você pode usar
attachEvent()
,returnValue
e fornecer uma implementação paragetElementsByClassName()
ou usar uma biblioteca como jQuery que vai ajudar com questões cross-browser). Você pode ler mais sobre esse método avançado de manipulação de eventos no MDN .jQuery
Eu gostaria de ficar longe de ser considerado um fanboy do jQuery, mas a manipulação do DOM e a manipulação de eventos são duas áreas em que ele ajuda mais com as diferenças do navegador. Apenas por diversão, aqui está como isso ficaria com o jQuery :
fonte
confirm(…)
no manipulador em linha. Eu não pude reproduzir isso.Sugiro evitar o JavaScript in-line:
Demonstração JS Fiddle .
O acima foi atualizado para reduzir o espaço, embora mantendo a clareza / função:
Demonstração JS Fiddle .
Uma atualização um pouco tardia, para usar
addEventListener()
(como sugerido por bažmegakapa , nos comentários abaixo):Demonstração JS Fiddle .
O acima vincula uma função ao evento de cada link individual; o que é potencialmente um desperdício, quando você pode vincular a manipulação de eventos (usando delegação) a um elemento ancestral, como o seguinte:
Demonstração JS Fiddle .
Como a manipulação de eventos é anexada ao
body
elemento, que normalmente contém uma série de outros elementos clicáveis, usei uma função provisória (actionToFunction
) para determinar o que fazer com esse clique. Se o elemento clicado é um link e, portanto, possui umtagName
dosa
, a manipulação de cliques é passada para areallySure()
função.Referências:
addEventListener()
.confirm()
.getElementsByTagName()
.onclick
.if () {}
.fonte
addEventListener
). +1 embora.addEventListener()
modelo.if(check == true)
porif(check)
.fonte
Você também pode tentar isso:
fonte
jAplus
Você pode fazer isso sem escrever código JavaScript
Página de demonstração
fonte
Esse método é um pouco diferente das respostas acima se você anexar seu manipulador de eventos usando addEventListener (ou attachEvent).
Você pode anexar esse manipulador com:
Ou para versões mais antigas do Internet Explorer:
fonte
window.event
.Apenas por diversão, vou usar um único evento em todo o documento, em vez de adicionar um evento a todas as tags de âncora:
Esse método seria mais eficiente se você tivesse muitas tags de âncora. Obviamente, isso se torna ainda mais eficiente quando você adiciona esse evento ao contêiner com todas as tags de âncora.
fonte
A maioria dos navegadores não exibe a mensagem personalizada passada para
confirm()
.Com esse método, você pode mostrar um pop-up com uma mensagem personalizada se o usuário alterou o valor de qualquer
<input>
campo.Você pode aplicar isso apenas a alguns links ou a outros elementos HTML da sua página. Basta adicionar uma classe personalizada a todos os links que precisam de confirmação e aplicar, use o seguinte código:
Tente alterar o valor de entrada no exemplo para obter uma visualização de como funciona.
fonte
USANDO PHP, HTML E JAVASCRIPT para solicitar
Apenas se alguém procurando usar php, html e javascript em um único arquivo, a resposta abaixo está funcionando para mim .. Anexei com o ícone de inicialização "lixo" usado para o link.
a razão pela qual eu usei o código php no meio é porque eu não posso usá-lo desde o início ..
o código abaixo não funciona para mim: -
e eu o modifiquei como no primeiro código e, em seguida, corro exatamente como o que preciso. Espero que eu possa ajudar alguém que precise do meu caso.
fonte