以下经典报告当我们选择特定行时会弹出一个名为 addExtraDetails 的新模态区域,其中一些数据从行中获取,并且用户需要一些新的附加信息:
单击(+)时,将弹出新的模态区域,并从报告行中获取填充值。所以:在列链接中,我把:
javascript:function_to_add_to_basket('E',#ID#, 'Extra#ROWNUM#', #PRICE#,'DUMMY');
然后外部js函数负责传递信息。问题是它不会每次刷新(+)而不是刷新,而是保留第一个输入的值。
点击(+)列链接后,我找到了更好的解决方案(更干净):
javascript:$s('P4_SET_QUANTITY','#QUANTITY#');
javascript:$s('P4_SET_TYPE','E');
javascript:$s('P4_SET_OBJECT_ID','#ID#');
javascript:$s('P4_SET_ELEMENT_ID','Extra#ROWNUM#');
javascript:$s('P4_SET_COST','#PRICE#');
javascript:$s('P4_SET_DISCOUNT','DUMMY');
javascript:openModal('addExtraDetails');
现在每当我们选择各种行时它会更新,因为我们有下拉列表javascript抓取Quantity列的所有可能值,所以对于这段代码:
javascript:$s('P4_SET_QUANTITY','#QUANTITY#');
输出结果为:' 012345678910'。
如何将所有值传递给模态区域并使其在每次调用时都使用新值?
答案 0 :(得分:1)
单击模式按钮时,需要检索选择列表的值。与其他值不同,该值不是静态的。在呈现页面时,替换字符串将替换为它们的值
如果你想要做的就是在javascript函数中使用它们,那么就没有必要做所有这些项目集。你的第一个想法可能同样好,但我会用openModal
运行。
首先,确定如何定位选择列表。您没有指定报表是向导生成的表格形式还是手动表格形式(即使用apex_item来生成选择列表)。您可以通过name属性定位选择列表,该属性引用数组,或者按列的标题选择。另请参阅this article。
例如,如果选择列表的列名为QUANTITY
,则选择列表为:
td[headers=QUANTITY] select:visible
或者,如果确定阵列,则可以更精确地定位元素。例如,如果NAME
属性设置为f02
,那么您可以选择
input[name=f02]
然后修改openModal
函数以选择与pThis
相同的行上的列表值 - 这将是触发元素,锚点:
function openModal(pThis, pMethod){
//fetch the value of the select list on the same row
//I use the second method of selecting here
var lListValue = $(pThis).closest('tr').find('input[name=f02]').val();
...
}
您还需要调整对openModal的调用:
javascript:openModal(this, 'addExtraDetails');