onpropertychange trigger wanneer value aangepast word (werkt met scriptmanager)

  • Onderwerp starter Onderwerp starter Waltz
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Waltz

Gebruiker
Lid geworden
8 nov 2009
Berichten
5
hallo,

Ik ben nieuw hier en ik heb me geregistreerd omdat ik op enkele problemen ben gestoten welke ik zelf niet kan oplossen.
Ik post dit hier omdat dit werkt met de asp:scriptmanager en dus geen gewone javascript functies zijn.
Ik ben een dll bestand aan het maken van een MaskedTextbox. Ik kan dit perfect maken het enige probleem is dat de functie onpropertychange in IE niet wil werken zoals het hoort.

ik heb volgende javascript gemaakt om de propertychange toe te voegen aan mijn control:

[JS]
Type.registerNamespace("QuyoControls.Web.UI");
QuyoControls.Web.UI.MaskedTextbox = function(element)
{
QuyoControls.Web.UI.MaskedTextbox.initializeBase(this, [element]);
this._propertyChangeDelegate = null
}
QuyoControls.Web.UI.MaskedTextbox.prototype =
{
get_Mask : function()
{
return this.get_element().Mask;
},
set_Mask : function(value)
{
this.get_element().Mask = value;
},
initialize : function()
{
QuyoControls.Web.UI.MaskedTextbox.callBaseMethod(this, 'initialize');
var element = this.get_element();
if(!this._propertyChangeDelegate)
{
this._propertyChangeDelegate = Function.createDelegate(this, this.propertyChangeEventHandler);
$addHandler(element, "propertychange", this._propertyChangeDelegate);
}
},
dispose : function()
{
var element = this.get_element();
if(this._propertyChangeDelegate)
{
$removeHandler(element, "propertychange", this._propertyChangeDelegate);
this._propertyChangeDelegate = null;
}
QuyoControls.Web.UI.MaskedTextbox.callBaseMethod(this, 'dispose');
},
propertyChangeEventHandler : function(e)
{
alert("succes");
}
}
QuyoControls.Web.UI.MaskedTextbox.registerClass("QuyoControls.Web.UI.MaskedTextbox", Sys.UI.Control);
if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();
[/JS]

met deze script werkt de onpropertychange perfect zoals het hoord. Het enige probleem is dat de textbox de Mask moet weergeven. hierdoor voer ik dit toe.

element.value = element.Mask;

wanneer ik dit doe en ik open de contextmenu op de control en klik op "verwijderen" dan werkt de onpropertychange niet. wanneer ik eerst iets typ en dan dezelfde actie doe dan werkt het weer wel.
De onproperty change werkt niet zoals het hoor vanaf ik deze command uitvoer en ik wil weten hoe ik de textbox toch zijn Mask kan laten weergeven en de onpropertychange toch correct weergeeft.

Het werkt correct als ik value in the html tag zet maar dit probeer ik net te vermijden.
 
Laatst bewerkt:
als je onderstaande html uitprobeert dan zul je mijn probleem direct herkennen.
nadat je op de knop drukt dan werkt de 1ste propertychange in de textbox niet meer.

HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script language="JavaScript">
	function propertychange()
	{
		var result = document.getElementById("result");
		result.innerHTML = editor.value;
	}
	function button_click()
	{
		editor.value += "_";
	}
</script>
</head>
<body>
<input type="textbox" name="editor" value="test" onpropertychange="propertychange()" /><input type="button" value="Mask toevoegen" onclick="button_click()" />
<br>
<div id="result"></div>
</body>
</html>
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan