Tema para preguntas random a Chatgpt 🤖

  • Autor Autor Carlos Arreola
  • Fecha de inicio Fecha de inicio
oks pero puedes hacer que si el usuario escribe otro arroba o escribe un espacio desaparezca el primer estas buscando?
Sí, puedes manejarlo limpiando todos los enlaces previamente creados antes de agregar los nuevos. Aquí te dejo la forma de hacerlo:

HTML:
<!DOCTYPE html>
<html>
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
    <textarea class="nawere" dataid="1"></textarea>
    <textarea class="nawere" dataid="2"></textarea>

    <script>
        $(document).ready(function(){
            let nawereStatus = {1: [], 2: []};

            $('.nawere').on('input', function() {
                var inputValue = $(this).val();
                var dataid = $(this).attr('dataid');

                if(nawereStatus[dataid].length) {
                    nawereStatus[dataid].forEach((element) => element.remove());
                    nawereStatus[dataid] = [];
                }

                var matches = inputValue.match(/@\w+/g);
                if(matches) {
                    matches.forEach(function(match) {
                       let element = $('<a class="intercomu cls'+dataid+'">estas buscando '+match+'</a>').insertAfter($(this));
                       nawereStatus[dataid].push(element);
                    }, this);
                }
            });
        });
    </script>
</body>
</html>
Ahora, cada vez que ingreses texto, este código eliminará todos los enlaces existentes antes de agregar los nuevos.
 
Sí, puedes manejarlo limpiando todos los enlaces previamente creados antes de agregar los nuevos. Aquí te dejo la forma de hacerlo:

HTML:
<!DOCTYPE html>
<html>
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
    <textarea class="nawere" dataid="1"></textarea>
    <textarea class="nawere" dataid="2"></textarea>

    <script>
        $(document).ready(function(){
            let nawereStatus = {1: [], 2: []};

            $('.nawere').on('input', function() {
                var inputValue = $(this).val();
                var dataid = $(this).attr('dataid');

                if(nawereStatus[dataid].length) {
                    nawereStatus[dataid].forEach((element) => element.remove());
                    nawereStatus[dataid] = [];
                }

                var matches = inputValue.match(/@\w+/g);
                if(matches) {
                    matches.forEach(function(match) {
                       let element = $('<a class="intercomu cls'+dataid+'">estas buscando '+match+'</a>').insertAfter($(this));
                       nawereStatus[dataid].push(element);
                    }, this);
                }
            });
        });
    </script>
</body>
</html>
Ahora, cada vez que ingreses texto, este código eliminará todos los enlaces existentes antes de agregar los nuevos.
perfecto todo bien, pero puedes hacer que tmb se elimine el intercomu?
 
perfecto todo bien, pero puedes hacer que tmb se elimine el intercomu?
Claro, para eliminar todos los elementos de la clase 'intercomu' antes de agregar nuevos elementos, puede incluir una línea de código adicional. Aquí está la forma de hacerlo:

HTML:
<!DOCTYPE html>
<html>
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
    <textarea class="nawere" dataid="1"></textarea>
    <textarea class="nawere" dataid="2"></textarea>

    <script>
        $(document).ready(function(){
            let nawereStatus = {1: [], 2: []};

            $('.nawere').on('input', function() {
                var inputValue = $(this).val();
                var dataid = $(this).attr('dataid');

                if(nawereStatus[dataid].length) {
                    nawereStatus[dataid].forEach((element) => element.remove());
                    nawereStatus[dataid] = [];
                }

                $(".intercomu").remove(); // Línea añadida para eliminar todos los elementos 'intercomu'

                var matches = inputValue.match(/@\w+/g);
                if(matches) {
                    matches.forEach(function(match) {
                       let element = $('<a class="intercomu cls' + dataid + '">estas buscando '+match+'</a>').insertAfter($(this));
                       nawereStatus[dataid].push(element);
                    }, this);
                }
            });
        });
    </script>
</body>
</html>

Esta línea adicional removerá todos los elementos 'intercomu' existentes cada vez que el usuario ingrese texto.
 
Claro, para eliminar todos los elementos de la clase 'intercomu' antes de agregar nuevos elementos, puede incluir una línea de código adicional. Aquí está la forma de hacerlo:

HTML:
<!DOCTYPE html>
<html>
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
    <textarea class="nawere" dataid="1"></textarea>
    <textarea class="nawere" dataid="2"></textarea>

    <script>
        $(document).ready(function(){
            let nawereStatus = {1: [], 2: []};

            $('.nawere').on('input', function() {
                var inputValue = $(this).val();
                var dataid = $(this).attr('dataid');

                if(nawereStatus[dataid].length) {
                    nawereStatus[dataid].forEach((element) => element.remove());
                    nawereStatus[dataid] = [];
                }

                $(".intercomu").remove(); // Línea añadida para eliminar todos los elementos 'intercomu'

                var matches = inputValue.match(/@\w+/g);
                if(matches) {
                    matches.forEach(function(match) {
                       let element = $('<a class="intercomu cls' + dataid + '">estas buscando '+match+'</a>').insertAfter($(this));
                       nawereStatus[dataid].push(element);
                    }, this);
                }
            });
        });
    </script>
</body>
</html>

Esta línea adicional removerá todos los elementos 'intercomu' existentes cada vez que el usuario ingrese texto.
no remueve el <a> con el class intercomu, que debo hacer?
 
no remueve el <a> con el class intercomu, que debo hacer?
Mis disculpas por el malentendido anterior. De hecho, el código que proporcioné debería eliminar todos los elementos con la clase 'intercomu'. Sin embargo, si aun así no funciona, podría haber un problema con la sincronización o con los selectores. Prueba con este código modificado:

HTML:
<!DOCTYPE html>
<html>
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
    <textarea class="nawere" dataid="1"></textarea>
    <textarea class="nawere" dataid="2"></textarea>

    <script>
        $(document).ready(function(){
            $('.nawere').on('input', function() {
                var inputValue = $(this).val();
                var dataid = $(this).attr('dataid');

                $(".intercomu").remove(); // Línea modificada para eliminar todos los elementos 'intercomu'

                var matches = inputValue.match(/@\w+/g);
                if(matches) {
                    matches.forEach(function(match) {
                       $('<a class="intercomu cls'+dataid+'">estas buscando '+match+'</a>').insertAfter($(this));
                    }, this);
                }
            });
        });
    </script>
</body>
</html>

En este código, eliminamos la matriz 'nawereStatus' porque no es necesaria. Ahora, a cada entrada del usuario, todos los elementos con la clase 'intercomu' se eliminarán antes de agregar los nuevos.
 
Mis disculpas por el malentendido anterior. De hecho, el código que proporcioné debería eliminar todos los elementos con la clase 'intercomu'. Sin embargo, si aun así no funciona, podría haber un problema con la sincronización o con los selectores. Prueba con este código modificado:

HTML:
<!DOCTYPE html>
<html>
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
    <textarea class="nawere" dataid="1"></textarea>
    <textarea class="nawere" dataid="2"></textarea>

    <script>
        $(document).ready(function(){
            $('.nawere').on('input', function() {
                var inputValue = $(this).val();
                var dataid = $(this).attr('dataid');

                $(".intercomu").remove(); // Línea modificada para eliminar todos los elementos 'intercomu'

                var matches = inputValue.match(/@\w+/g);
                if(matches) {
                    matches.forEach(function(match) {
                       $('<a class="intercomu cls'+dataid+'">estas buscando '+match+'</a>').insertAfter($(this));
                    }, this);
                }
            });
        });
    </script>
</body>
</html>

En este código, eliminamos la matriz 'nawereStatus' porque no es necesaria. Ahora, a cada entrada del usuario, todos los elementos con la clase 'intercomu' se eliminarán antes de agregar los nuevos.
quiero es que cuando el usuario escriba un @ o un espacio el intercomu que aparecio anteriormente desaparezca
 
quiero es que cuando el usuario escriba un @ o un espacio el intercomu que aparecio anteriormente desaparezca
Entendido, aquí está el código modificado para eso. Este código eliminará todos los elementos con la clase 'intercomu' cada vez que se escriba un '@' o un espacio.

HTML:
<!DOCTYPE html>
<html>
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
    <textarea class="nawere" dataid="1"></textarea>
    <textarea class="nawere" dataid="2"></textarea>

    <script>
        $(document).ready(function(){
            $('.nawere').on('input', function() {
                var inputValue = $(this).val();
                var dataid = $(this).attr('dataid');

                if(inputValue.endsWith('@') || inputValue.endsWith(' ')) {
                    $(".intercomu").remove(); // Elimina todos los elementos 'intercomu'
                }

                var matches = inputValue.match(/@\w+/g);
                if(matches) {
                    matches.forEach(function(match) {
                        $('<a class="intercomu cls'+dataid+'">estas buscando '+match+'</a>').insertAfter($(this));
                    }, this);
                }
            });
        });
    </script>
</body>
</html>

Ahora, cada vez que el usuario escriba '@' o un espacio, todas las apariciones anteriores de "estas buscando" serán eliminadas.
 
Entendido, aquí está el código modificado para eso. Este código eliminará todos los elementos con la clase 'intercomu' cada vez que se escriba un '@' o un espacio.

HTML:
<!DOCTYPE html>
<html>
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
    <textarea class="nawere" dataid="1"></textarea>
    <textarea class="nawere" dataid="2"></textarea>

    <script>
        $(document).ready(function(){
            $('.nawere').on('input', function() {
                var inputValue = $(this).val();
                var dataid = $(this).attr('dataid');

                if(inputValue.endsWith('@') || inputValue.endsWith(' ')) {
                    $(".intercomu").remove(); // Elimina todos los elementos 'intercomu'
                }

                var matches = inputValue.match(/@\w+/g);
                if(matches) {
                    matches.forEach(function(match) {
                        $('<a class="intercomu cls'+dataid+'">estas buscando '+match+'</a>').insertAfter($(this));
                    }, this);
                }
            });
        });
    </script>
</body>
</html>

Ahora, cada vez que el usuario escriba '@' o un espacio, todas las apariciones anteriores de "estas buscando" serán eliminadas.
creo que hay un error, cuando escribo @ y escribo el intercomu crea otros cuando sigo escribiendo
 
creo que hay un error, cuando escribo @ y escribo el intercomu crea otros cuando sigo escribiendo
Lamento el error. Parece que el problema puede ser causado por la creación de nuevos elementos 'intercomu' cada vez que coinciden las condiciones. Probaría comprobando si el "@" es seguido por caracteres no espaciales antes de agregar un nuevo elemento "intercomu". Aquí te dejo una posible solución:

HTML:
<!DOCTYPE html>
<html>
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
    <textarea class="nawere" dataid="1"></textarea>
    <textarea class="nawere" dataid="2"></textarea>

    <script>
        $(document).ready(function(){
            $('.nawere').on('input', function() {
                var inputValue = $(this).val();
                var dataid = $(this).attr('dataid');

                if(inputValue.endsWith('@') || inputValue.endsWith(' ')) {
                    $(".intercomu").remove(); 
                }

                var matches = inputValue.match(/@\w+/g);
                if(matches && !inputValue.endsWith('@ ')) {
                    $(".intercomu").remove();
                    matches.forEach(function(match) {
                        $('<a class="intercomu cls'+dataid+'">estas buscando '+match+'</a>').insertAfter($(this));
                    }, this);
                }
            });
        });
    </script>
</body>
</html>

Este código creará un nuevo elemento 'intercomu' sólo si el "@" es seguido por al menos un caracter no espacial. Cada vez que el usuario escriba "@" o espacio, se eliminarán todas las apariciones anteriores de "estas buscando".
 
Lamento el error. Parece que el problema puede ser causado por la creación de nuevos elementos 'intercomu' cada vez que coinciden las condiciones. Probaría comprobando si el "@" es seguido por caracteres no espaciales antes de agregar un nuevo elemento "intercomu". Aquí te dejo una posible solución:

HTML:
<!DOCTYPE html>
<html>
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
    <textarea class="nawere" dataid="1"></textarea>
    <textarea class="nawere" dataid="2"></textarea>

    <script>
        $(document).ready(function(){
            $('.nawere').on('input', function() {
                var inputValue = $(this).val();
                var dataid = $(this).attr('dataid');

                if(inputValue.endsWith('@') || inputValue.endsWith(' ')) {
                    $(".intercomu").remove();
                }

                var matches = inputValue.match(/@\w+/g);
                if(matches && !inputValue.endsWith('@ ')) {
                    $(".intercomu").remove();
                    matches.forEach(function(match) {
                        $('<a class="intercomu cls'+dataid+'">estas buscando '+match+'</a>').insertAfter($(this));
                    }, this);
                }
            });
        });
    </script>
</body>
</html>

Este código creará un nuevo elemento 'intercomu' sólo si el "@" es seguido por al menos un caracter no espacial. Cada vez que el usuario escriba "@" o espacio, se eliminarán todas las apariciones anteriores de "estas buscando".
no se eliminan
 
Mis disculpas por las dificultades anteriores. Aquí te dejo el código modificado. Esta vez, cuando el usuario escriba un "@" o un espacio, se eliminará el mensaje de "estas buscando" anterior.

HTML:
<!DOCTYPE html>
<html>
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
    <textarea class="nawere" dataid="1"></textarea>
    <textarea class="nawere" dataid="2"></textarea>

    <script>
        $(document).ready(function(){
            $('.nawere').on('input', function() {
                var inputValue = $(this).val();
                var dataid = $(this).attr('dataid');

                if(inputValue.endsWith('@') || inputValue.endsWith(' ')) {
                    $(".intercomu").remove(); 
                    return;  // retorna aquí para no agregar un nuevo intercomu
                }

                var matches = inputValue.match(/@\w+/g);
                if(matches) {
                    $(".intercomu").remove();
                    $('<a class="intercomu cls'+dataid+'">estas buscando '+matches[matches.length - 1]+'</a>').insertAfter($(this));
                }
            });
        });
    </script>
</body>
</html>

Ahora, solo se mostrará un mensaje "estas buscando" a la vez y se eliminará cuando el usuario escriba "@" o espacio.
 
Mis disculpas por las dificultades anteriores. Aquí te dejo el código modificado. Esta vez, cuando el usuario escriba un "@" o un espacio, se eliminará el mensaje de "estas buscando" anterior.

HTML:
<!DOCTYPE html>
<html>
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
    <textarea class="nawere" dataid="1"></textarea>
    <textarea class="nawere" dataid="2"></textarea>

    <script>
        $(document).ready(function(){
            $('.nawere').on('input', function() {
                var inputValue = $(this).val();
                var dataid = $(this).attr('dataid');

                if(inputValue.endsWith('@') || inputValue.endsWith(' ')) {
                    $(".intercomu").remove();
                    return;  // retorna aquí para no agregar un nuevo intercomu
                }

                var matches = inputValue.match(/@\w+/g);
                if(matches) {
                    $(".intercomu").remove();
                    $('<a class="intercomu cls'+dataid+'">estas buscando '+matches[matches.length - 1]+'</a>').insertAfter($(this));
                }
            });
        });
    </script>
</body>
</html>

Ahora, solo se mostrará un mensaje "estas buscando" a la vez y se eliminará cuando el usuario escriba "@" o espacio.
perfectooo ahora si quedoo... muchas gracias broo, cualquier cosa te aviso
 
perfectooo ahora si quedoo... muchas gracias broo, cualquier cosa te aviso
De nada, me alegra saber que el código finalmente funcionó para ti. No dudes en volver si tienes más preguntas o necesitas ayuda adicional. ¡Feliz programación!
 
De nada, me alegra saber que el código finalmente funcionó para ti. No dudes en volver si tienes más preguntas o necesitas ayuda adicional. ¡Feliz programación!
$resultado = mysqli_query($conexion,"SELECT * FROM user where nombre='hola' ORDER BY id asc LIMIT 20");

como puedo hacer que esto seleccione los ultimos 20 pero que los muestre de forma asc??
 
$resultado = mysqli_query($conexion,"SELECT * FROM user where nombre='hola' ORDER BY id asc LIMIT 20");

como puedo hacer que esto seleccione los ultimos 20 pero que los muestre de forma asc??
Necesitarías hacer el ordenamiento en una subconsulta primero para obtener los últimos 20 registros y luego ordenarlos en ascendente. Aquí te dejo cómo sería:

PHP:
$resultado = mysqli_query($conexion, "SELECT * FROM (SELECT * FROM user WHERE nombre='hola' ORDER BY id DESC LIMIT 20) sub ORDER BY id ASC");

Este fragmento de código seleccionará las últimas 20 entradas donde el nombre es 'hola', y luego las ordenará en orden ascendente por id.
 
Necesitarías hacer el ordenamiento en una subconsulta primero para obtener los últimos 20 registros y luego ordenarlos en ascendente. Aquí te dejo cómo sería:

PHP:
$resultado = mysqli_query($conexion, "SELECT * FROM (SELECT * FROM user WHERE nombre='hola' ORDER BY id DESC LIMIT 20) sub ORDER BY id ASC");

Este fragmento de código seleccionará las últimas 20 entradas donde el nombre es 'hola', y luego las ordenará en orden ascendente por id.
me lo imagine jeje gracias <3
 
¡De nada! Si tienes más preguntas en el futuro, no dudes en preguntar. ¡Feliz codificación! 💻❤️
como hago para que esto funcione?
$(".dat"+id).attr("data-poster",+1);
 
como hago para que esto funcione?
$(".dat"+id).attr("data-poster",+1);
Para que el código funcione correctamente, el valor de "id" debe ser definido previamente. Luego, también necesita asegurarse de que hay un elemento con la clase "dat"+id.

Una forma corregida de tu código podría ser:

JavaScript:
var id = "algúnValor";
$(".dat"+id).attr("data-poster", 1);

Con esta versión, "algúnValor" es un ejemplo de lo que podría ser tu ID. Reemplaza "algúnValor" con el ID correcto que corresponde al elemento en tu HTML.

Esta línea ahora seleccionará el elemento con la clase que se forma concatenando "dat" y tu ID, luego le asignará el valor 1 al atributo "data-poster".
 
Para que el código funcione correctamente, el valor de "id" debe ser definido previamente. Luego, también necesita asegurarse de que hay un elemento con la clase "dat"+id.

Una forma corregida de tu código podría ser:

JavaScript:
var id = "algúnValor";
$(".dat"+id).attr("data-poster", 1);

Con esta versión, "algúnValor" es un ejemplo de lo que podría ser tu ID. Reemplaza "algúnValor" con el ID correcto que corresponde al elemento en tu HTML.

Esta línea ahora seleccionará el elemento con la clase que se forma concatenando "dat" y tu ID, luego le asignará el valor 1 al atributo "data-poster".
pero quiero que se sume uno ejemplo si esta asi <span data-poster="22"></span> se sume 1 y de 23
 
Atrás
Arriba