Javascript 如何检查下拉列表是否为只读?

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 如果存在

我想检查下拉列表是否为只读。我在重复控制中的xpage上有一个下拉列表,根据特定条件,其中一个下拉列表将处于只读状态。我想使用CSJS javascript、jquery、dojo检查哪一个是只读的。您可以通过以下几种方法使用jquery:

第一条路:

第二种方式:

第三种方式:


使用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);
}