Специальные символы в id тегов html

В html-коде я использую код <input type = "text" id = "[email protected]">, чтобы получить текст теперь ему нужно получить его значение, которое вводится в текстовое поле. Я использую jquery для этого:

$( 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);
    });
});

Сделав это, я получаю ошибку значения undefined. Я попытался удалить специальные символы из идентификатора, чтобы получить его значение. Но мне нужен идентификатор со специальными символами. Как может Я получаю его значение с помощью jquery?

Ответ 2

Вместо того, чтобы пытаться использовать идентификатор с помощью #, попробуйте это, чтобы соответствовать атрибуту, подобному этому,

$('[id=ID]')

или

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

поэтому вместо

bidID = "#" + idVal + "bid"

вы можете попробовать

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

Ответ 3

Похоже, что JQuery имеет полезный метод для этого, начиная с версии 3, под названием escapeSelector.

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

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

Ответ 4

$(document.getElementById('[email protected]')) также работает.

Ответ 5

У вас есть шанс на это, а не на 100% на то, как вы это делаете. Дайте мне знать:

$( 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);
    });
});

Ответ 6

Используйте функцию CSS.escape(), чтобы выбрать этот элемент DOM. В вашем случае для идентификатора [email protected] вы можете использовать приведенный ниже код.

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

Ответ 7

Дайте одинарные кавычки обеим сторонам идентификатора, например:

$('#[email protected]').val()