Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olaa,
Sou iniciante em JQuery, estou tentando mostrar e esconder botões, por padrão os botões encontram-se com visible=false e dependendo da condição o botão fica visivel ou não, conforme mostra o código abaixo:
if (controle == "0") {
$("#<%= btnAtualiza.ClientID %>").show();
$("#<%= btnCria.ClientID %>").hide();
}else if (controle == "1") {
$("#<%= btnAtualiza.ClientID %>").hide();
$("#<%= btnCria.ClientID %>").show();
}
Mas o botão não fica visivel, ja pesquisei e a propriedade que é usada para deixar o botão como visivel é o show(). Como resolver tal situação, deixando os botões visiveis ??
Desde Já, Agradeço.
Aonde você define a var controle? Qual o valor dela antes do if?
Carlos Eduardo
Prezado Matias Rezende,
Antes do if eu somente tenho a resposta de uma requisição Ajax, dependendo dessa resposta é que eu tomo a decisão de ativar e desativar os botões que estão como padrão com o visible = false. Eu não sei como definir a var do controle, você poderia me dar maiores informações a respeito.
Desde Já, Agradeço.
Veja, o que quero saber é o seguinte:
if (controle == "0") {
...
}else if (controle == "1") {
Traduzindo para português:
>
se a variável controle for igual a "0".
...
Senão, se a variável controle for igual a "1".
A sua lógica depende TOTALMENTE do valor da variável controle. Porque você faz este if se você não sabe o que tem na variável controle? Apenas para debug, troque esta parte do código por:
if (controle == "0") {
$("#<%= btnAtualiza.ClientID %>").show();
$("#<%= btnCria.ClientID %>").hide();
}else if (controle == "1") {
$("#<%= btnAtualiza.ClientID %>").hide();
$("#<%= btnCria.ClientID %>").show();
} else {
alert(controle);
}
Veja se aparece alguma coisa.
Carlos Eduardo
Meu amigo não entendi direito mais se ajudar eu uso assim quando alguem clica no botão para imprimir espero que ajude!
Exemplo:
<button type="button" value="imprimir" name="OmeuBT" class="bot100" onclick="OmeuBT.style.display='none';OmeuBT.style.visibility='hidden';window.print()" >Imprimir</button>
@drigo e @Matias Rezende jQuery é uma framework em Javascript. Como tal, só tange marcação processada. Equivalente em PHP, seria como eu tentar acessar
$('<?php echo "<p>Teste</p>"; ?>')
. Isso NUNCA vai acontecer porque quando o Javascript entrar em execução, o código do lado do servidor já terá sido traduzido para HTML puro!
Reforço, abra o código-fonte do navegador (o atalho padrão é ctrl+u) e procure o resultado da renderização destes objetos. Provavelmente será um
<button id="">
e assim será possível acessar o elemento com jQuery, Javascript, MooTools ou qualquer outro tipo de ferramenta **CLIENT-SIDE**.
Em tempo: Se o Javascript estiver embarcado na marcação, experimente fazer o caminho contrário, ao invés do ASP escrever apenas o ID, dentro de uma string, faça com que o mesmo escreva TODA a id:
<% response.write('$("#' + btnAtualiza.ClientId + '")...'); %>
Evandro.
Discordo do que você colocou. Veja o código dele.
$("#<%= btnAtualiza.ClientID %>").show();
Não entendo nada de ASP, mas me parece que este código vai imprimir o código id do cliente, que deve ser o mesmo id que está em algum elemento. Como as linguagens server-side são executadas no servidor, são executadas antes do JS, retornando HTML puro ao navegador, que então renderiza.
Pegando um exemplo em PHP (que é a linguagem que conheço), da seguinte forma.
<?php $id = 'teste';?>
<html>
<head>
<title>Página</title>
<script type="text/javascript">
function teste() {
alert(document.getElementById('<?php echo $id?>').value);
}
</script>
</head>
<body>
<input type="text" id="<?php echo $id?>" onchange="teste()">
</body>
</html>
Este código PHP retornará o seguinte HTML:
<html>
<head>
<title>Página</title>
<script type="text/javascript">
function teste() {
alert(document.getElementById('teste').value);
}
</script>
</head>
<body>
<input type="text" id="teste" onchange="teste()">
</body>
</html>
Veja que, ao modificar o input, será alertado o valor digitado dentro do campo. Então, acredito que, no problema inicial, o caso seja que não está entrando no if nem no elseif.
Carlos Eduardo
Daria certo com PHP e JSP por isso mesmo. Com .NET, seja ASP, C#, J#, não. A linguagem é integrada à marcação em formato XML. A expressão se torna uma string. É bem possível que exibindo os fontes, o código puro esteja sendo exibido.
Ainda assim devemos priorizar o Server-side separando expressões de Strings e resultados processados. A minha segunda sugestão deve dar algum retorno, ainda que não seja o esperado.
Vale lembrar que eu não estava considerando o Javascript embarcado. Que foi a nota que fiz no final do post. Tenho a péssima mania de acreditar que todo mundo codifica separando as camadas.
>
Daria certo com PHP e JSP por isso mesmo. Com .NET, seja ASP, C#, J#, não. A linguagem é integrada à marcação em formato XML. A expressão se torna uma string. É bem possível que exibindo os fontes, o código puro esteja sendo exibido.
Não sabia disto. Pra mim é novidade.
>
Vale lembrar que eu não estava considerando o Javascript embarcado. Que foi a nota que fiz no final do post. Tenho a péssima mania de acreditar que todo mundo codifica separando as camadas.
Hehehehe... Eu já desisti. :P Faço a minha parte, mas não espero que os outros façam...
Carlos Eduardo
Por isso pedi que ele postasse os fontes do navegador. Dependendo do problema, é erro de lógica e o tópico seria movido para o fórum de .NET
Problema resolvido, Obrigado pela atenção de todos.
Apenas separei os dois botoes, cada um em uma div. Logo após usei o ...attr('disables',true).
Novamente Obrigado.
Javascript trabalha com conteúdo processado (client side). As tags passadas são conteúdo pré-processado (server-side). Veja no código-fonte do navegador que o resultado é completamente diferente do que você codifica.