如何在Xpage中将Editbox的模式从读取模式更改为编辑模式
How to change the mode of Editbox from read mode to edit mode in Xpage?
实际上,我已经为特定字段的Xpage
中的属性-只读设置了true。
我已经尝试将其模式更改为在客户端javascript中进行编辑。但我无法改变
我使用了以下代码。。。
document.getElementById("#{id:read}").readOnly=false;
以及
dojo.attr("#{id:read}","readOnly",false);
两者都失败了。。。
(@Trim)
Also in Server side Javascript XSP Code is:
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" dojoParseOnLoad="true"
dojoTheme="true">
<xp:this.resources>
<xp:dojoModule name="dijit.Dialog"></xp:dojoModule>
</xp:this.resources>
<div id="dojoTest" dojoType="dijit.Dialog">
<xp:inputText id="field" defaultValue="Hello" readonly="true"></xp:inputText>
<xp:button value="Label" id="button1">
<xp:eventHandler event="onclick" submit="true"
refreshMode="partial" refreshId="field">
<xp:this.action> <![CDATA[{javascript:getComponent("field").setReadonly(false);}]]></xp:this.action>
</xp:eventHandler></xp:button>
<xp:br></xp:br></div>
<xp:br></xp:br>
<xp:br></xp:br>
<xp:button value="Show Popup" id="button2">
<xp:eventHandler event="onclick" submit="false">
<xp:this.script><![CDATA[dijit.byId("dojoTest").show();]]> </xp:this.script>
</xp:eventHandler></xp:button>
</xp:view>
经过进一步审查,此问题与字段本身无关:问题中包含的代码适合所需的响应。相反,问题在于事件是在dijit中定义的。对话
Dojo解析对话框时,出于布局原因,会将DOM元素移动到主体的末尾。不幸的是,这也会将其移出表单。这会中断任何服务器端事件,因为事件数据不再作为表单的一部分进行序列化。因此,在您的示例中,事件失败不是因为事件代码错误,而是因为事件本身从未被触发。
理想的解决方案是使用扩展库(或8.5.3 UP1)中的Dialog组件,而不是使用指定dojoType的passthroughdiv。如果这不是一个选项,那么有一个变通方法。。。在页面底部添加以下组件:
<xp:scriptBlock>
<xp:this.value><![CDATA[XSP.addOnLoad(function(){
var dominoForm = XSP.byId("#{javascript:return view.findScriptCollector().getClientId(facesContext);}");
dojo.query("div.dijitDialog").forEach(function(eachDialog){
dojo.place(eachDialog, dominoForm, "last");
});
});]]></xp:this.value>
</xp:scriptBlock>
这将导致所有已解析的对话框都移回表单中,从而使其中的事件能够再次正常启动。
如果您想在服务器端执行此操作,下面是一个切换读取/编辑模式的按钮示例:
var comp = getComponent("inputText1");
if (comp && !comp.isReadonly()) {
comp.setReadonly(true);
}else if (comp && comp.isReadonly()) {
comp.setReadonly(false);
}
看看这个网站,可以看到所有可以通过SSJS进行交互的组件的所有属性。
通过使用<xp:inputText id="read"readonly="true">lt/xp:inputText>
服务器创建<SPAN标记-无法转换为文本字段
<span id="view:_id1:inputText1">lt/span>
在8.5.3中,您将转到字段上的所有属性,并添加一个值为True 的READONLY属性
这将创建以下标记
<xp:inputText id="read" defaultValue="Marky">
<xp:this.attrs>
<xp:attr name="READONLY" value="true"></xp:attr>
</xp:this.attrs>
</xp:inputText>
在R8.5.3之前的版本中,您可以使用在页面的onClientLoad事件上以编程方式将READONLY属性添加到字段中
dojo.attr("#{id:read}"、"READONLY"、"true");
这是标记
<xp:inputText id="read" defaultValue="Marky">
</xp:inputText>
<xp:eventHandler event="onClientLoad" submit="false">
<xp:this.script><![CDATA[dojo.attr("#{id:read}", "READONLY", "true");]]></xp:this.script>
</xp:eventHandler>
然后,一旦你在表单上正确创建了字段,你就可以使用进行编辑
document.getElementById("#{id:read}").removeAttribute('readOnly');
- 从桌面读取python文件时高亮显示代码
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 使用Dnamics CRM 2011中的JavaScript读取子网格的所有记录,而不考虑活动页面
- Javascript,访问一个主要对象模块模式中的每个对象
- 节点Js:How to catch a“;没有这样的文件或目录“;读取线模块出错
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 试图在引导模式内动态生成图表,得到offsetWidth错误
- TypeError:无法读取属性'推'未定义的JavaScript
- 同样,同样的错误'ahorcado.js:26未捕获类型错误:无法读取属性'beginPath'
- 同位素库错误:未捕获错误无布局模式包装生产线8
- 未捕获的TypeError无法读取未定义的属性socialsharing
- 如何在读取XLS/XLSX本地文件时,使用IE的javascript代码启用未标记为安全的ActiveX控件
- 字符串在将其传递给另一个活动Android JavaScript时读取Null
- 创建一个像 WordPress 一样读取模式的正则表达式
- 可以使用javascript或phonegap以二进制模式从远程服务器读取图像
- 读取引导模式弹出窗口中的Querystring参数
- XPages-以读取模式显示附件
- 模式html将数据中的字符读取为html标记
- 如何在Xpage中将Editbox的模式从读取模式更改为编辑模式
- 我可以以最小模式发布我的javascript文件,并且很难被其他人读取吗?比如jquery库