3

我正在尝试在 Software AG webMethods IDE 中使用 jQuery 功能,它自己生成页面.. 基本上,我给 jQuery 的函数一个服务器生成的元素 ID,但 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());

...我总是收到警告说“未定义”(不带双引号)..

返回文本字段 ID 的表达式是:

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

..这是:

jsfwmp147312:defaultForm:txtInput

如果我改为运行这个 webMethods 内置函数来获取值:

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

它确实返回文本字段中当前的值..

所以基本上由于某种原因 jQuery 的函数无法与页面的元素“连接”..

我该如何诊断/解决这个问题?

编辑:

更多信息:

如果我尝试以下代码...

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);

...我收到消息“未定义”(不带双引号)的警报..

4

2 回答 2

1

问题是:表示 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");
}
于 2012-03-09T13:30:28.533 回答
1

我们需要一些 HTML。不过,我不太了解您的选择器。你说它是“分配给一个按钮”,所以你需要一个click.

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

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

});

总体而言,客户端代码和服务器端代码不通信。服务器端代码输出 HTML,然后客户端代码处理它。对于这两个通信,您需要通过例如页面请求或 AJAX 发送数据。

于 2012-03-09T13:17:15.233 回答