首页 > 解决方案 > 在 PL/SQL 动态内容中将变量传递给 htp.p

问题描述

我正在尝试根据 db 列和 UI 组件上的复选框传递变量中的值以进行验证。注意:Max_Set 是保存 DB 列中的最大数量的变量,该数量将针对 numberOfChecked 项进行验证。但是,当我将 Max_Set 传递给 htp.p 脚本时,我无法使用变量中的值。

select num into Max_Set from table where column_name = name;

htp.p('<script type="text/javascript">');  
htp.p('function ValidateSelection1()  
{  
 var checkboxes = document.getElementsByName("student");  
 var numberOfCheckedItems = 0; 
 var Max_num = Max_Set
  
for(var i = 0; i < checkboxes.length; i++)  
{  
    if(checkboxes[i].checked)  
        numberOfCheckedItems++;  
}  
if(numberOfCheckedItems > Max_num)  
{  
    alert("You cant select more than the required number for this SL Site!");  
    return false;  
}  
}');  
htp.p('</script>');

如何将 Max_Set 中的值用于 htp.p 脚本而不将其视为字符串?

标签: htmloracle-apex

解决方案


在您的 pl/sql 代码中,htp 调用中的所有内容都被视为字符串。如果要使用在 pl/sql 中声明的变量,可以连接 (||) 将它们放在一起。我将“Max_Set”替换为“l_max_set”以表明这是一个本地 pl/sql 变量而不是 javascript 变量,并且 initcap 倾向于使其看起来像 javascript。

select num into l_max_set from table where column_name = name;

htp.p('<script type="text/javascript">');  
htp.p('function ValidateSelection1()  
{  
 var checkboxes = document.getElementsByName("student");  
 var numberOfCheckedItems = 0; 
 var Max_num = '||l_max_set||';
  
for(var i = 0; i < checkboxes.length; i++)  
{  
    if(checkboxes[i].checked)  
        numberOfCheckedItems++;  
}  
if(numberOfCheckedItems > Max_num)  
{  
    alert("You cant select more than the required number for this SL Site!");  
    return false;  
}  
}');  
htp.p('</script>');

推荐阅读