Ir ao conteúdo

outra dúvida jquery


Alanps

Posts recomendados

Postado

quero q apareça o nome de quem ta digitando quando ele tá digitando, dai fiz esse esqueminha em jquery mas nao ta funfando, alguem sabe o erro ?

<script type="text/javascript" language="javascript">
$(function(){
$("#status").html("<br>");
$("input[name='msg']").focus(function(){
$.post('a_online_nome.php', {digitando: digitando }, function(resposta) {
if (resposta != false) {
$("#status").html(resposta);
}
else {
$("#status").html("<br>");
}
});
});
});
</script>

a_online_nome.php:


<?php

$digitando = $_POST["digitando"];

if (empty($digitando)) {
echo false;
}
else {
$query = mysql_query("SELECT * FROM `atendimento_dup`") or die(mysql_error());
while ($row = mysql_fetch_array($query)) {
echo "$row[Nome] esta digitando.";
}

?>

  • Moderador
Postado

Olá, seu codigo contem alguns erros.. e você nao esta usando o cabeçalho que te recomendei a usar na parte do php.

faça desta forma:


<script type="text/javascript">
$(document).ready(function() {
var campo = $("#msg");
var valorDigitado = $("msg").val();
campo.bind('focus',function(){
$.post('a_online_nome.php', {msg: valorDigitado},
function(resposta){
$("#status").html(resposta);
},
'html');
return false;
});
});

</script>

formulario:


<div id="form">
<form action="#" method="post">
<input type="text" name="msg" id="msg">
</form>
</div>

<div id="status"></div>


a_online_nome.php:


<?php
$gmtDate = gmdate("D, d M Y H:i:s");
header("Expires: {$gmtDate} GMT");
header("Last-Modified: {$gmtDate} GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("Content-Type: text/html; charset=UTF-8");
date_default_timezone_set("Brazil/East");

$digitando = $_POST["msg"];

include 'conexao.php';

$query = mysql_query("SELECT * FROM atendimento_dup") or die(mysql_error());
while ($row = mysql_fetch_array($query)) {
$nome = $row["nome"];
echo "$nome esta digitando.";
}
?>

testei aqui e esta funcionando.

acabei de fazer uma pequena alteraçao no jquery veja:


<script type="text/javascript">
$(document).ready(function() {
var campo = $("#msg");
var valorDigitado = $("#msg").val();
campo.bind('focus',function(){
$.post('a_online_nome.php', {msg: valorDigitado},
function(resposta){

[COLOR="Red"]$("#status").show().html(resposta);[/COLOR]
},
'html');
return false;
});

[COLOR="Red"]campo.focusout(function(){
$("#status").hide();
});[/COLOR]
});

</script>

destaquei em vermelho.. fazendo assim.. enquanto o campo input tiver foco... ele mostra mensagem: fulano está digitando. quando o campo input perde o foco.. a div do status é escondida. existem outras formar melhores e mais otimizadas de fazer isso... eu fiz no rapidao..

abraço.

Postado
Olá, seu codigo contem alguns erros.. e você nao esta usando o cabeçalho que te recomendei a usar na parte do php.

faça desta forma:


<script type="text/javascript">
$(document).ready(function() {
var campo = $("#msg");
var valorDigitado = $("msg").val();
campo.bind('focus',function(){
$.post('a_online_nome.php', {msg: valorDigitado},
function(resposta){
$("#status").html(resposta);
},
'html');
return false;
});
});

</script>

formulario:


<div id="form">
<form action="#" method="post">
<input type="text" name="msg" id="msg">
</form>
</div>

<div id="status"></div>


a_online_nome.php:


<?php
$gmtDate = gmdate("D, d M Y H:i:s");
header("Expires: {$gmtDate} GMT");
header("Last-Modified: {$gmtDate} GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("Content-Type: text/html; charset=UTF-8");
date_default_timezone_set("Brazil/East");

$digitando = $_POST["msg"];

include 'conexao.php';

$query = mysql_query("SELECT * FROM atendimento_dup") or die(mysql_error());
while ($row = mysql_fetch_array($query)) {
$nome = $row["nome"];
echo "$nome esta digitando.";
}
?>

testei aqui e esta funcionando.

acabei de fazer uma pequena alteraçao no jquery veja:


<script type="text/javascript">
$(document).ready(function() {
var campo = $("#msg");
var valorDigitado = $("#msg").val();
campo.bind('focus',function(){
$.post('a_online_nome.php', {msg: valorDigitado},
function(resposta){

[COLOR="Red"]$("#status").show().html(resposta);[/COLOR]
},
'html');
return false;
});

[COLOR="Red"]campo.focusout(function(){
$("#status").hide();
});[/COLOR]
});

</script>

destaquei em vermelho.. fazendo assim.. enquanto o campo input tiver foco... ele mostra mensagem: fulano está digitando. quando o campo input perde o foco.. a div do status é escondida. existem outras formar melhores e mais otimizadas de fazer isso... eu fiz no rapidao..

abraço.

ae deu certo, só troquei o focusout por blur

valeu

  • Moderador
Postado

amigo, só uma correção:

perceba que no codigo.. você simplesmente esconde a div certo? faça as seguintes mudanças para ficar melhor:

no lugar de: $("#status").show().html(resposta); coloque assim: $("#status").html(resposta);

e no lugar de: $("#status").hide(); coloque assim: $("#status").html('');

note que fazendo desta maneira, você nao precisa da "ganbiarra" de esconder a div... você so precisa zerar o conteudo da div status.

abraço

ah sim.. na verdade sao duas funçoes diferentes.. o focusout refere-se apenas sobre o elemento que perdeu o foco.

ja o blur é aplicado quando há parentes. por exemplo você usa blur() quando há por exemplo dois formulario diferentes dentro de uma mesma div.. neste caso os campos de input sao parentes da div. alemdo mais que o blur segundo a api do jquery so é aplicada em inputs.. então nao funcionaria em um textarea.

ja o focusout funcionaria.. bem pelo menos esta é a teoria

Postado

ae, valeu tá funcionando legal, eu usei $("#status").html("<br>"); para nao ficar abaixando e levantando quando clica no input...valeu!!!

  • Moderador
Postado

você nao precisa por o <br/> . defina a posiçao da div pelo css. geralmente eu deixo a div em nivel de bloco com display: block, e deixo sempre a "1em" da margin-bottom do elemento no formulario.

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!