我正在尝试在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);
...我收到一条警告“未定义”(没有双引号)..
答案 0 :(得分:1)
我们需要一些HTML。我不太了解你的选择器。你说它是“分配给一个按钮”,所以你需要一个click
。
jQuery(document).on("click", "#clientIds[name=txtInput]", function(){
v = $(this).val();
alert(v);
});
总的来说,客户端代码和服务器端代码无法通信。服务器端代码吐出HTML,客户端代码随后处理它。对于两者来说,你需要通过例如发送数据来发送数据。页面请求或AJAX。
答案 1 :(得分: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");
}