Selección de elementos con caracteres especiales en el ID

2 minutos de lectura

avatar de usuario
grande

En código html estoy usando código
<input type = "text" id = "[email protected]"> para obtener texto ahora necesita obtener su valor que se ingresa en el campo de texto. Estoy usando jquery para hacer eso:

$( document ).ready( function() {
    $( ".bid" ).click( function() {
        idVal = this.id
        bidID = "#" + idVal + "bid"
        spanID = "#" + idVal + "cbid"
        bidValue = $(bidID).val();

        alert(idVal)
        alert(bidID)
        alert(bidValue) //this alert says undefined
        $( spanID ).html( '&nbsp;' ).load( '{% url online_machines %}?id=' + idVal + '&bidvalue=" + bidValue);
    });
});

Al hacer esto, obtengo el error de valor indefinido. Traté de eliminar caracteres especiales de la identificación para obtener su valor. Pero necesito la identificación con caracteres especiales. ¿Cómo puedo obtener su valor usando jquery?

En lugar de intentar obtener la identificación usando #, intente esto para que coincida con un atributo como este,

$("[id=ID]')

o

$('[id='+ID+']')

así que en lugar de

bidID = "#" + idVal + "bid"

puedes probar

bidID = "[id=" + idVal + "bid]"

  • En algunos casos, es posible que deba hacerlo así: $(“[id=’ID’]”)

    – La Berga

    27 de enero de 2017 a las 10:02

  • Esto podría no funcionar: $(‘[id=’+ID+’]’) debes poner $('[id="'+ID+'"]') El valor de id debe estar entre comillas

    – Panos Kal.

    4 de septiembre de 2017 a las 7:22


avatar de usuario
ysrb

Prueba a escapar:

$('#abc\\@def.com').val();

primer párrafo de http://api.jquery.com/category/selectors/

  • Creo que sería $(‘#abc\\@def\\.com’)

    – mplungjan

    10 de septiembre de 2013 a las 12:54


Parece que JQuery tiene un método útil para esto a partir de la versión 3 llamado escapeSelector.

$('#' + $.escapeSelector(my_id_with_special_chars));

https://api.jquery.com/jQuery.escapeSelector/

$(document.getElementById('[email protected]')) también funciona

Intenta esto, no 100% sobre si esto es lo que buscas. Hágamelo saber:

$( document ).ready(function() {
    $(".bid").click(function() {
        idVal = $(this).attr('id');
        bidID = "#" + idVal + "bid";
        spanID = "#" + idVal + "cbid";
        bidValue = bidID.val();

        alert(idVal);
        alert(bidID);
        alert(bidValue);
        spanID.html('&nbsp;').load('{% url online_machines %}?id=' + idVal + '&bidvalue=" + bidValue);
    });
});

avatar de usuario
José Jojo Juan

Use la función CSS.escape() para seleccionar ese elemento DOM. En su caso, para la identificación [email protected], puede usar el siguiente código.

$("#" + CSS.escape("[email protected]'));

avatar de usuario
gleno

Esta solución a continuación funcionó para mí, es bastante limpia:

//your HTML id has special characters: 
var option= "Some option with (parenthesis or @ )";
//use this type of jquery query:
$(`[id="order_${option}"]`).prop('checked',true)

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad