Javascript 如何检查下拉列表是否为只读?
我想检查下拉列表是否为只读。我在重复控制中的xpage上有一个下拉列表,根据特定条件,其中一个下拉列表将处于只读状态。我想使用CSJS javascript、jquery、dojo检查哪一个是只读的。您可以通过以下几种方法使用jquery: 第一条路: 第二种方式: 第三种方式:Javascript 如何检查下拉列表是否为只读?,javascript,jquery,dojo,xpages,Javascript,Jquery,Dojo,Xpages,我想检查下拉列表是否为只读。我在重复控制中的xpage上有一个下拉列表,根据特定条件,其中一个下拉列表将处于只读状态。我想使用CSJS javascript、jquery、dojo检查哪一个是只读的。您可以通过以下几种方法使用jquery: 第一条路: 第二种方式: 第三种方式: 使用jQuery方法尝试以下操作: alert($('select[readonly]').attr('id')); // alerts the id of readonly select element 如果存在
使用jQuery方法尝试以下操作:
alert($('select[readonly]').attr('id'));
// alerts the id of readonly select element
如果存在多个只读选择元素,则可以使用.map方法将ID存储在数组中:
或者,如果您打算禁用,则可以更改为以下脚本:
alert($('select[disabled]').attr('id'));
或
假设您的下拉列表是xp:combobox类型的XPages控件,您可以使用服务器端逻辑执行以下操作来检查该控件是否为只读:
getComponent("<id of combobox>").isReadonly()
正如您所提到的,XPages中的只读组合框不会呈现为下拉列表,而是呈现为具有组合框id的表。正如我们所知,XPages中的只读组合框不会呈现为下拉列表,而是呈现为具有组合框id的表。 如果我们尝试将一些值设置为只读下拉列表,它将不可见,因为只读下拉列表呈现为表,并且该表具有value属性 所以,我在运行时创建了一个span元素,用于显示带有combobox id的只读combobox值,并使用了dropdown的visible属性而不是readonly属性,这样即使是表也不会被创建
function setValues()
{
//START OF CODE: Set values on dialog
var RepID = "#{id:repeatControlID}"
var totalcont = "#{javascript:getComponent('repeatControlID').getRowCount()}";
var val = "#{javascript: DataSourceObj.getItemValue('docField')}"
for(i=0;i<val.length;i++)
{
var idChL = RepID+":"+i+":comboboxID";
var cbCell = RepID+":"+i+":cbCell"; //cbCell is my id of table cell in which my combobox is present
var element = document.getElementById(idChL);
if(element) //Check if dropdown is rendered, if not then create element on fly
{
element.value = val;
}
else{
createEle(idChL,cbCell,val);
}
}
//END OF CODE: Set values on dialog
}
function createEle(idText,cbCell,idVal)
{
var input = document.createElement("span");
input.innerText = idVal;
input.id = idText;
var parentEle = document.getElementById(cbCell);
parentEle.appendChild(input);
}
检查一下$'select'.prop'readonly'返回true/false。我根本不会呈现下拉列表,而是用该值呈现计算字段。创建一个更干净的界面,您只需检查:是否存在?是的,这正是正在发生的事情它没有呈现下拉列表,而是创建了一个表,并且该表具有下拉列表id。我想为这些下拉列表设置值,但由于只读下拉列表没有呈现,我不能这样做。如果我禁用该下拉列表,则其值将不会提交到服务器,因此再次出现问题。在repeat control中,我有几个下拉列表,我想限制用户更改符合特定条件的下拉列表值,这就是为什么我试图将其设置为禁用或只读,但两者都不起作用。Henrik,我正在编写客户端javascript,getComponent将在SSJS中工作。我尝试从CSJS var valchk={javascript:getComponentcbApproverList.isReadonly}调用getComponent;alertvalchk;这是一个错误。。
var readOnly = $('select[readonly]').map(function(){
return this.id;
}).get();
alert($('select[disabled]').attr('id'));
var readOnly = $('select[disabled]').map(function(){
return this.id;
}).get();
getComponent("<id of combobox>").isReadonly()
function setValues()
{
//START OF CODE: Set values on dialog
var RepID = "#{id:repeatControlID}"
var totalcont = "#{javascript:getComponent('repeatControlID').getRowCount()}";
var val = "#{javascript: DataSourceObj.getItemValue('docField')}"
for(i=0;i<val.length;i++)
{
var idChL = RepID+":"+i+":comboboxID";
var cbCell = RepID+":"+i+":cbCell"; //cbCell is my id of table cell in which my combobox is present
var element = document.getElementById(idChL);
if(element) //Check if dropdown is rendered, if not then create element on fly
{
element.value = val;
}
else{
createEle(idChL,cbCell,val);
}
}
//END OF CODE: Set values on dialog
}
function createEle(idText,cbCell,idVal)
{
var input = document.createElement("span");
input.innerText = idVal;
input.id = idText;
var parentEle = document.getElementById(cbCell);
parentEle.appendChild(input);
}