我想检查下拉列表是否只读。我在我的xpage内有重复控制的下拉列表,根据某些条件,我的一个下拉列表将是readonly。我想用CSJS(javascript,jquery,dojo)检查哪一个是readonly
答案 0 :(得分:1)
你可以用几种方式使用jquery:
第一道:
if($('select').attr('disabled'))
{
alert("read only");
}
第二路:
if($('select').is(':disabled'))
{
alert("read only");
}
第三种方式:
if($('select').attr('readonly'))
{
alert("read only");
}
答案 1 :(得分:1)
假设您的下拉列表是类型为xp:combobox的XPage控件,您可以执行以下操作以使用服务器端逻辑检查控件是否只读:
getComponent("<id of combobox>").isReadonly()
正如您自己提到的,XPage中的只读组合框不会呈现为下拉列表,而是呈现为具有组合框ID的表格。
答案 2 :(得分:0)
尝试使用jQuery方法:
alert($('select[readonly]').attr('id'));
// alerts the id of readonly select element
如果有多个只读选择元素,那么您可以使用.map()
方法将ID存储在数组中:
var readOnly = $('select[readonly]').map(function(){
return this.id;
}).get();
或者如果您的意思是disabled
,那么您可以更改为此脚本:
alert($('select[disabled]').attr('id'));
或
var readOnly = $('select[disabled]').map(function(){
return this.id;
}).get();
答案 3 :(得分:0)
正如我们所知,XPage中的只读组合框不是作为下拉列表呈现的,而是作为具有组合框ID的表。 如果我们尝试将一些值设置为readonly下拉列表,则它将不可见,因为readonly下拉列表呈现为表,并且该表具有value属性。
所以,我在运行时创建了一个span元素,用我的组合框的id显示我的只读组合框值,并使用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);
}