jQuery не может «соединиться» с элементами на моем сервере, сгенерированном веб-странице - PullRequest
3 голосов
/ 09 марта 2012

Я пытаюсь использовать функциональность jQuery в IDE Software AG webMethods, которая сама генерирует страницы. В основном я даю функциям jQuery сгенерированный сервером идентификатор элемента, но jQuery не может прочитать его значение записать значение или сделать что-нибудь с ним ..

Вот код, который я использую:

if(jQuery.isNumeric(jQuery(CAF.model("#{activePageBean.clientIds['txtInput']}").id).val()))
{
alert("its a number");
}
else
{
alert("its not a number");
}

txtInput - это обычное текстовое поле ввода, и вышеуказанный код назначается кнопке ... И независимо от того, что помещено в текстовое поле, я всегда получаю предупреждение "это не число" ..

Кроме того, если я использую этот код вместо ..

alert(jQuery(CAF.model("#{activePageBean.clientIds['txtInput']}").id).val());

... Я всегда получаю предупреждение, в котором говорится "неопределено" (без двойных кавычек) ..

Выражение, возвращающее идентификатор текстового поля:

CAF.model("#{activePageBean.clientIds['txtInput']}").id

.. а это:

jsfwmp147312:defaultForm:txtInput

Если я вместо этого запущу эту встроенную функцию webMethods, чтобы получить значение:

CAF.model("#{activePageBean.clientIds['txtInput']}").getValue();

Возвращает текущее значение в текстовом поле.

Так что по какой-то причине функции jQuery не могут «соединиться» с элементами страницы.

Как мне диагностировать / разрешить это?

EDIT:

Дополнительная информация:

Если я попробую следующий код ...

var myId = "jsfwmp147312:defaultForm:txtInput";
var element = document.getElementById(myId);
alert(element.value + "");

.. Я получаю строковое значение текстового поля в предупреждении нормально, без проблем ... Но если я попробую это ...

var myId = "jsfwmp147312:defaultForm:txtInput";
var val2 = jQuery(myId).val();
alert(val2);

... Я получаю предупреждение с сообщением «undefined» (без двойных кавычек) ..

Ответы [ 2 ]

1 голос
/ 09 марта 2012

Проблема: означает что-то в селекторе jQuery, поэтому он не ищет что-то еще.

Строка должна выглядеть как jsfwmp147312\:defaultForm\:txtInput

Так что вам нужно будет заставить его работать в два этапа

var myId = CAF.model("#{activePageBean.clientIds['txtInput']}").id.replace(/:/g,"\\:");
var val = jQuery(myId).val();

if (jQuery.isNumeric( val ) {
    alert("its a number");
} else {
    alert("its not a number");
}
1 голос
/ 09 марта 2012

Нам понадобится немного HTML с этим. Я не очень понимаю ваш селектор, хотя. Вы говорите, что он «назначен кнопке», поэтому вам понадобится click.

jQuery(document).on("click", "#clientIds[name=txtInput]", function(){

    v = $(this).val();
    alert(v);

});

В целом, код на стороне клиента и код на стороне сервера не взаимодействуют. Код на стороне сервера выплевывает HTML, а код на стороне клиента обрабатывает его позже. Для того, чтобы общаться, вам нужно отправить данные, например, через. страница запросов или AJAX.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...