onpropertychange为什么只能在input type=button的disable由false到true的时候触发?

nwpuwolf 2003-05-25 04:14:56
onpropertychange事件对于input type=button对象为什么只能在disable由false到true的时候触发?
如果想要触发将input type=button对象的disable从true到false怎么办?
...全文
286 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingdomzhf 2003-05-26
  • 打赏
  • 举报
回复
disable后可能不会触发事件了
这样可以达到目的
<input type = button value="button1" clickv=false name="button1" onpropertychange="alert('disabled checked to '+this.disabled)">
<input type=button value="change button1's disabled" onclick = "document.all.button1.clickv = !document.all.button1.clickv;document.all.button1.disabled=!document.all.button1.disabled">
nwpuwolf 2003-05-26
  • 打赏
  • 举报
回复
我现在是用htc用自定义的按钮替换普通的input type=button
但是希望能继承原来的input type=button的一些事件、方法和属性
比如改变input type=button的value和disable属性


-----------------------Mybutton.htc-----------------------------
// 描述 : 转化自定义按钮
// 版本 : 1.0
// 作者 : 宝玉(junminliu@msn.com)
// 最新更新 : 2003-5-7
// 备注 :

<PUBLIC:COMPONENT>
<PUBLIC:ATTACH EVENT="oncontentready" ONEVENT="fnInit()" />
<PUBLIC:ATTACH EVENT="ondragstart" ONEVENT="fnCancel()" />
<PUBLIC:ATTACH EVENT="onselectstart" ONEVENT="fnCancel()" />
<PUBLIC:ATTACH EVENT="onpropertychange" ONEVENT="fnPropertychange()" />
<SCRIPT LANGUAGE="JScript">
/*****************************************************
初始化生成按钮
*****************************************************/
function fnInit()
{
var input = element;
if (input.className == "MyButton" && input.type == "button")
{
var _table = window.document.createElement("TABLE");
// _table.mergeAttributes(input);
var icon = "";
_table.cellSpacing = 0;
_table.cellPadding = 0;
_table.border = 0;
_table.className = "ButtonTable";
_table.style.display = "inline";
var _tr = _table.insertRow();
var _td = _tr.insertCell();
_td.innerHTML = "<IMG SRC='images/botton001.gif' WIDTH=2 HEIGHT=24 BORDER=0>";
_td = _tr.insertCell();
_td.className = "ButtonTable_td";
var _vtable = element.document.createElement("TABLE");
_vtable.cellSpacing = 0;
_vtable.cellPadding = 0;
_vtable.border = 0;
_vtable.width = "100%";
_vtable.height = "100%";
var _vtr = _vtable.insertRow();
_vtr.className = "ButtonValue";
if(!input.icon)
icon = "";
else
icon = input.icon;
var img = " "
if(icon != "") img += "<img src='"+icon+"' border=0 align='absbottom' hspace=2>";
_vtr.insertCell().innerHTML = img;
var _vtd = _vtr.insertCell();
_vtd.innerHTML = input.value;
_table.value = _vtd;
var accessKeytext = " ";
if(input.accessKey != ""){
accessKeytext = "(<U>" + input.accessKey + "</U>) " ;
_table.accessKey = input.accessKey;
}
_vtr.insertCell().innerHTML = accessKeytext;
if(input.disabled)
{
_vtr.cells[1].className = "ButtonDisable";
_vtr.cells[2].className = "ButtonDisable";
}
_td.appendChild(_vtable);
_td = _tr.insertCell();
_td.innerHTML = "<IMG SRC=images/botton003.gif WIDTH=2 HEIGHT=24 BORDER=0>";
input.parentElement.insertBefore(_table, input);
_table.attachEvent("onclick", function(){input.click()})
_table.attachEvent("onselectstart", function(){return false;})
input.style.display = "none";
input.MyButton = _table;
window.document.attachEvent("onkeydown", AccessKey)
}
}
/*****************************************************
快捷键
*****************************************************/
function AccessKey(){
if(window.event.altKey && String.fromCharCode(event.keyCode) == element.accessKey){
element.click();
}
}

function fnPropertychange(){
var obj = event.srcElement;
switch(event.propertyName.toString().toLowerCase()) {
case "value":Value(obj);break;
case "disabled":Disabled(obj);break;
}
}
function Value(obj){
obj.MyButton.value.innerHTML = obj.value;
}
function Disabled(obj){
_vtr = obj.MyButton.value.parentElement;
if(obj.disabled)
{
_vtr.cells[1].className = "ButtonDisable";
_vtr.cells[2].className = "ButtonDisable";
}
else
{
_vtr.cells[1].className = "";
_vtr.cells[2].className = "";
}
}
/*****************************************************
禁止拖动
*****************************************************/
function fnCancel()
{
window.event.returnValue = false;
return false;
}
</SCRIPT>
</PUBLIC:COMPONENT>
fason 2003-05-25
  • 打赏
  • 举报
回复
我的理解是这样,当在被disabed之后,onpropertychange已经不可用,就像disabled之后提交会接收不到数据一样,测试一下
<input value="button1" name="button1" onpropertychange="alert('disabled checked to '+this.readOnly)">
<input type=button value="change button1's disabled" onclick = "document.all.button1.readOnly=!document.all.button1.readOnly">
nwpuwolf 2003-05-25
  • 打赏
  • 举报
回复
<input type = button value="button1" name="button1" onpropertychange="alert('disabled checked to '+this.disabled)">
<input type=button value="change button1's disabled" onclick = "document.all.button1.disabled=!document.all.button1.disabled">

您看上面的例子,只触发了一次
孟子E章 2003-05-25
  • 打赏
  • 举报
回复
onpropertychange表示属性改变时触发,有true到false不是变了吗?

其它属性改变也会触发的

87,988

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧