diff options
author | wei <> | 2006-04-14 05:14:34 +0000 |
---|---|---|
committer | wei <> | 2006-04-14 05:14:34 +0000 |
commit | 7949f7fe746dbbe3eeefbc123bbb2c551b091733 (patch) | |
tree | 3880a5fbad51a2c9aca5ab5c5dc5b01f1a8f2da6 /framework/Web | |
parent | 9e21d160ead61cd0ed86c16a0668c50b14f58baf (diff) |
Fixed #93 and #121
Diffstat (limited to 'framework/Web')
-rw-r--r-- | framework/Web/Javascripts/js/colorpicker.js | 2 | ||||
-rw-r--r-- | framework/Web/Javascripts/js/prado.js | 293 | ||||
-rw-r--r-- | framework/Web/Javascripts/js/validator.js | 2 | ||||
-rw-r--r-- | framework/Web/Javascripts/prado/controls.js | 48 | ||||
-rw-r--r-- | framework/Web/Javascripts/prado/form.js | 13 | ||||
-rw-r--r-- | framework/Web/Javascripts/prado/validation.js | 3 | ||||
-rw-r--r-- | framework/Web/UI/WebControls/TImageButton.php | 1 |
7 files changed, 218 insertions, 144 deletions
diff --git a/framework/Web/Javascripts/js/colorpicker.js b/framework/Web/Javascripts/js/colorpicker.js index 5668be98..3dde7692 100644 --- a/framework/Web/Javascripts/js/colorpicker.js +++ b/framework/Web/Javascripts/js/colorpicker.js @@ -320,7 +320,7 @@ this.inputs=_65; var _67=Prado.WebUI.TColorPicker.UIImages; this.inputs["currentColor"]=SPAN({className:"currentColor"}); this.inputs["oldColor"]=SPAN({className:"oldColor"}); -var _68=TABLE({className:"inputs"},TBODY(null,TR(null,TD({className:"currentcolor",colSpan:2},this.inputs["currentColor"],this.inputs["oldColor"])),TR(null,TD(null,"H:"),TD(null,this.inputs["H"],"\u63b3")),TR(null,TD(null,"S:"),TD(null,this.inputs["S"],"%")),TR(null,TD(null,"V:"),TD(null,this.inputs["V"],"%")),TR(null,TD({className:"gap"},"R:"),TD({className:"gap"},this.inputs["R"])),TR(null,TD(null,"G:"),TD(null,this.inputs["G"])),TR(null,TD(null,"B:"),TD(null,this.inputs["B"])),TR(null,TD({className:"gap"},"#"),TD({className:"gap"},this.inputs["HEX"])))); +var _68=TABLE({className:"inputs"},TBODY(null,TR(null,TD({className:"currentcolor",colSpan:2},this.inputs["currentColor"],this.inputs["oldColor"])),TR(null,TD(null,"H:"),TD(null,this.inputs["H"],"\xc2\xb0")),TR(null,TD(null,"S:"),TD(null,this.inputs["S"],"%")),TR(null,TD(null,"V:"),TD(null,this.inputs["V"],"%")),TR(null,TD({className:"gap"},"R:"),TD({className:"gap"},this.inputs["R"])),TR(null,TD(null,"G:"),TD(null,this.inputs["G"])),TR(null,TD(null,"B:"),TD(null,this.inputs["B"])),TR(null,TD({className:"gap"},"#"),TD({className:"gap"},this.inputs["HEX"])))); var _69={selector:SPAN({className:"selector"}),background:SPAN({className:"colorpanel"}),slider:SPAN({className:"slider"}),hue:SPAN({className:"strip"})}; if(Prado.Browser().ie){ var _70="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"; diff --git a/framework/Web/Javascripts/js/prado.js b/framework/Web/Javascripts/js/prado.js index d142a070..a60372e8 100644 --- a/framework/Web/Javascripts/js/prado.js +++ b/framework/Web/Javascripts/js/prado.js @@ -1677,12 +1677,13 @@ Prado.PostBack=function(_379,_380){ var form=$(_380["FormID"]); var _381=true; if(_380["CausesValidation"]&&Prado.Validation){ +var _382=true; if(_380["ValidationGroup"]){ -Prado.Validation.SetActiveGroup(Event.element(_379),_380["ValidationGroup"]); +_382=Prado.Validation.ValidateValidationGroup(_380["ValidationGroup"]); }else{ -Prado.Validation.SetActiveGroup(null,null); +_382=Prado.Validation.ValidateNonGroup(form); } -if(Prado.Validation.IsValid(form)==false){ +if(!_382){ if(_380["StopEvent"]){ Event.stop(_379); } @@ -1693,13 +1694,13 @@ if(_380["PostBackUrl"]&&_380["PostBackUrl"].length>0){ form.action=_380["PostBackUrl"]; } if(_380["TrackFocus"]){ -var _382=$("PRADO_LASTFOCUS"); -if(_382){ -var _383=document.activeElement; +var _383=$("PRADO_LASTFOCUS"); if(_383){ -_382.value=_383.id; +var _384=document.activeElement; +if(_384){ +_383.value=_384.id; }else{ -_382.value=_380["EventTarget"]; +_383.value=_380["EventTarget"]; } } } @@ -1710,24 +1711,24 @@ if(_380["StopEvent"]){ Event.stop(_379); } }; -Prado.Element={setValue:function(_384,_385){ -var el=$(_384); +Prado.Element={setValue:function(_385,_386){ +var el=$(_385); if(el&&typeof (el.value)!="undefined"){ -el.value=_385; +el.value=_386; } -},select:function(_387,_388,_389){ -var el=$(_387); -var _390=_387.indexOf("[]")>-1; -if(!el&&!_390){ +},select:function(_388,_389,_390){ +var el=$(_388); +var _391=_388.indexOf("[]")>-1; +if(!el&&!_391){ return; } -_388=_390?"check"+_388:el.tagName.toLowerCase()+_388; -var _391=Prado.Element.Selection; -if(isFunction(_391[_388])){ -_391[_388](_390?_387:el,_389); +_389=_391?"check"+_389:el.tagName.toLowerCase()+_389; +var _392=Prado.Element.Selection; +if(isFunction(_392[_389])){ +_392[_389](_391?_388:el,_390); } -},click:function(_392){ -var el=$(_392); +},click:function(_393){ +var el=$(_393); if(!el){ return; } @@ -1743,25 +1744,25 @@ el.onclick(); } } } -},setAttribute:function(_394,_395,_396){ -var el=$(_394); -if(_395=="disabled"&&_396==false){ -el.removeAttribute(_395); +},setAttribute:function(_395,_396,_397){ +var el=$(_395); +if(_396=="disabled"&&_397==false){ +el.removeAttribute(_396); }else{ -el.setAttribute(_395,_396); +el.setAttribute(_396,_397); } -},setOptions:function(_397,_398){ -var el=$(_397); +},setOptions:function(_398,_399){ +var el=$(_398); if(el&&el.tagName.toLowerCase()=="select"){ while(el.length>0){ el.remove(0); } -for(var i=0;i<_398.length;i++){ -el.options[el.options.length]=new Option(_398[i][0],_398[i][1]); +for(var i=0;i<_399.length;i++){ +el.options[el.options.length]=new Option(_399[i][0],_399[i][1]); } } -},focus:function(_399){ -var obj=$(_399); +},focus:function(_400){ +var obj=$(_400); if(isObject(obj)&&isdef(obj.focus)){ setTimeout(function(){ obj.focus(); @@ -1769,22 +1770,22 @@ obj.focus(); } return false; }}; -Prado.Element.Selection={inputValue:function(el,_401){ +Prado.Element.Selection={inputValue:function(el,_402){ switch(el.type.toLowerCase()){ case "checkbox": case "radio": -return el.checked=_401; +return el.checked=_402; } -},selectValue:function(el,_402){ -$A(el.options).each(function(_403){ -_403.selected=_403.value==_402; +},selectValue:function(el,_403){ +$A(el.options).each(function(_404){ +_404.selected=_404.value==_403; }); -},selectIndex:function(el,_404){ +},selectIndex:function(el,_405){ if(el.type=="select-one"){ -el.selectedIndex=_404; +el.selectedIndex=_405; }else{ for(var i=0;i<el.length;i++){ -if(i==_404){ +if(i==_405){ el.options[i].selected=true; } } @@ -1792,23 +1793,23 @@ el.options[i].selected=true; },selectClear:function(el){ el.selectedIndex=-1; },selectAll:function(el){ -$A(el.options).each(function(_405){ -_405.selected=true; -Logger.warn(_405.value); +$A(el.options).each(function(_406){ +_406.selected=true; +Logger.warn(_406.value); }); },selectInvert:function(el){ -$A(el.options).each(function(_406){ -_406.selected=!_406.selected; +$A(el.options).each(function(_407){ +_407.selected=!_407.selected; }); -},checkValue:function(name,_407){ +},checkValue:function(name,_408){ $A(document.getElementsByName(name)).each(function(el){ -el.checked=el.value==_407; +el.checked=el.value==_408; }); -},checkIndex:function(name,_408){ -var _409=$A(document.getElementsByName(name)); -for(var i=0;i<_409.length;i++){ -if(i==_408){ -_409[i].checked=true; +},checkIndex:function(name,_409){ +var _410=$A(document.getElementsByName(name)); +for(var i=0;i<_410.length;i++){ +if(i==_409){ +_410[i].checked=true; } } },checkClear:function(name){ @@ -1824,108 +1825,126 @@ $A(document.getElementsByName(name)).each(function(el){ el.checked=!el.checked; }); }}; -Object.extend(Prado.Element,{Insert:{After:function(_410,_411){ -new Insertion.After(_410,_411); -},Before:function(_412,_413){ -new Insertion.Before(_412.innerHTML); -},Below:function(_414,_415){ -new Insertion.Bottom(_414,_415); -},Above:function(_416,_417){ -new Insertion.Top(_416,_417); -}},CssClass:{set:function(_418,_419){ -_418=new Element.ClassNames(_418); -_418.set(_419); +Object.extend(Prado.Element,{Insert:{After:function(_411,_412){ +new Insertion.After(_411,_412); +},Before:function(_413,_414){ +new Insertion.Before(_413.innerHTML); +},Below:function(_415,_416){ +new Insertion.Bottom(_415,_416); +},Above:function(_417,_418){ +new Insertion.Top(_417,_418); +}},CssClass:{set:function(_419,_420){ +_419=new Element.ClassNames(_419); +_419.set(_420); }}}); Prado.WebUI=Class.create(); Prado.WebUI.PostBackControl=Class.create(); -Object.extend(Prado.WebUI.PostBackControl.prototype,{initialize:function(_420){ -this.element=$(_420["ID"]); -if(_420["CausesValidation"]&&Prado.Validation){ -Prado.Validation.AddTarget(_420["ID"],_420["ValidationGroup"]); +Object.extend(Prado.WebUI.PostBackControl.prototype,{initialize:function(_421){ +this.element=$(_421["ID"]); +if(_421["CausesValidation"]&&Prado.Validation){ +Prado.Validation.AddTarget(_421["ID"],_421["ValidationGroup"]); } if(this.onInit){ -this.onInit(_420); +this.onInit(_421); } }}); -Prado.WebUI.createPostBackComponent=function(_421){ -var _422=Class.create(); -Object.extend(_422.prototype,Prado.WebUI.PostBackControl.prototype); -if(_421){ -Object.extend(_422.prototype,_421); +Prado.WebUI.createPostBackComponent=function(_422){ +var _423=Class.create(); +Object.extend(_423.prototype,Prado.WebUI.PostBackControl.prototype); +if(_422){ +Object.extend(_423.prototype,_422); } -return _422; +return _423; }; Prado.WebUI.TButton=Prado.WebUI.createPostBackComponent(); -Prado.WebUI.ClickableComponent=Prado.WebUI.createPostBackComponent({_elementOnClick:null,onInit:function(_423){ +Prado.WebUI.ClickableComponent=Prado.WebUI.createPostBackComponent({_elementOnClick:null,onInit:function(_424){ if(isFunction(this.element.onclick)){ this._elementOnClick=this.element.onclick; this.element.onclick=null; } -Event.observe(this.element,"click",this.onClick.bindEvent(this,_423)); -},onClick:function(_424,_425){ -var src=Event.element(_424); -var _427=true; -var _428=null; +Event.observe(this.element,"click",this.onClick.bindEvent(this,_424)); +},onClick:function(_425,_426){ +var src=Event.element(_425); +var _428=true; +var _429=null; if(this._elementOnClick){ -var _428=this._elementOnClick(_424); -if(isBoolean(_428)){ -_427=_428; +var _429=this._elementOnClick(_425); +if(isBoolean(_429)){ +_428=_429; } } -if(_427){ -this.onPostBack(_424,_425); +if(_428){ +this.onPostBack(_425,_426); } -if(isBoolean(_428)&&!_428){ -Event.stop(_424); +if(isBoolean(_429)&&!_429){ +Event.stop(_425); } -},onPostBack:function(_429,_430){ -Prado.PostBack(_429,_430); +},onPostBack:function(_430,_431){ +Prado.PostBack(_430,_431); }}); Prado.WebUI.TLinkButton=Prado.WebUI.ClickableComponent; -Prado.WebUI.TImageButton=Prado.WebUI.ClickableComponent; Prado.WebUI.TCheckBox=Prado.WebUI.ClickableComponent; Prado.WebUI.TBulletedList=Prado.WebUI.ClickableComponent; Prado.WebUI.TImageMap=Prado.WebUI.ClickableComponent; +Prado.WebUI.TImageButton=Class.create(); +Object.extend(Prado.WebUI.TImageButton.prototype,Prado.WebUI.ClickableComponent.prototype); +Object.extend(Prado.WebUI.TImageButton.prototype,{hasXYInput:false,onPostBack:function(_432,_433){ +if(!this.hasXYInput){ +this.addXYInput(_432,_433); +this.hasXYInput=true; +} +Prado.PostBack(_432,_433); +},addXYInput:function(_434,_435){ +var _436=Position.cumulativeOffset(this.element); +var _437=[_434.clientX,_434.clientY]; +var x=_437[0]-_436[0]+1; +var y=_437[1]-_436[1]+1; +var id=_435["EventTarget"]; +var _438=INPUT({type:"hidden",name:id+"_x",value:x}); +var _439=INPUT({type:"hidden",name:id+"_y",value:y}); +this.element.parentNode.appendChild(_438); +this.element.parentNode.appendChild(_439); +}}); Prado.WebUI.TRadioButton=Prado.WebUI.createPostBackComponent(Prado.WebUI.ClickableComponent.prototype); Prado.WebUI.TRadioButton.prototype.onRadioButtonInitialize=Prado.WebUI.TRadioButton.prototype.initialize; -Object.extend(Prado.WebUI.TRadioButton.prototype,{initialize:function(_431){ -this.element=$(_431["ID"]); +Object.extend(Prado.WebUI.TRadioButton.prototype,{initialize:function(_440){ +this.element=$(_440["ID"]); if(!this.element.checked){ -this.onRadioButtonInitialize(_431); +this.onRadioButtonInitialize(_440); } }}); -Prado.WebUI.TTextBox=Prado.WebUI.createPostBackComponent({onInit:function(_432){ -if(_432["TextMode"]!="MultiLine"){ +Prado.WebUI.TTextBox=Prado.WebUI.createPostBackComponent({onInit:function(_441){ +if(_441["TextMode"]!="MultiLine"){ Event.observe(this.element,"keydown",this.handleReturnKey.bind(this)); } -Event.observe(this.element,"change",Prado.PostBack.bindEvent(this,_432)); +Event.observe(this.element,"change",Prado.PostBack.bindEvent(this,_441)); },handleReturnKey:function(e){ if(Event.keyCode(e)==Event.KEY_RETURN){ -var _433=Event.element(e); -if(_433){ -Event.fireEvent(_433,"change"); +var _442=Event.element(e); +if(_442){ +Event.fireEvent(_442,"change"); Event.stop(e); } } }}); -Prado.WebUI.TListControl=Prado.WebUI.createPostBackComponent({onInit:function(_434){ -Event.observe(this.element,"change",Prado.PostBack.bindEvent(this,_434)); +Prado.WebUI.TListControl=Prado.WebUI.createPostBackComponent({onInit:function(_443){ +Event.observe(this.element,"change",Prado.PostBack.bindEvent(this,_443)); }}); Prado.WebUI.TListBox=Prado.WebUI.TListControl; Prado.WebUI.TDropDownList=Prado.WebUI.TListControl; Prado.WebUI.DefaultButton=Class.create(); -Object.extend(Prado.WebUI.DefaultButton.prototype,{initialize:function(_435){ -this.options=_435; +Object.extend(Prado.WebUI.DefaultButton.prototype,{initialize:function(_444){ +this.options=_444; this._event=this.triggerEvent.bindEvent(this); -Event.observe(_435["Panel"],"keydown",this._event); -},triggerEvent:function(ev,_437){ -var _438=Event.keyCode(ev)==Event.KEY_RETURN; -var _439=Event.element(ev).tagName.toLowerCase()=="textarea"; -if(_438&&!_439){ -var _440=$(this.options["Target"]); -if(_440){ +Event.observe(_444["Panel"],"keydown",this._event); +},triggerEvent:function(ev,_446){ +var _447=Event.keyCode(ev)==Event.KEY_RETURN; +var _448=Event.element(ev).tagName.toLowerCase()=="textarea"; +if(_447&&!_448){ +var _449=$(this.options["Target"]); +if(_449){ this.triggered=true; -Event.fireEvent(_440,this.options["Event"]); +Event.fireEvent(_449,this.options["Event"]); Event.stop(ev); } } @@ -1935,15 +1954,15 @@ Prado.WebUI.TTextHighlighter.prototype={initialize:function(id){ if(!window.clipboardData){ return; } -var _441={href:"javascript:;//copy code to clipboard",onclick:"Prado.WebUI.TTextHighlighter.copy(this)",onmouseover:"Prado.WebUI.TTextHighlighter.hover(this)",onmouseout:"Prado.WebUI.TTextHighlighter.out(this)"}; -var div=DIV({className:"copycode"},A(_441,"Copy Code")); +var _450={href:"javascript:;//copy code to clipboard",onclick:"Prado.WebUI.TTextHighlighter.copy(this)",onmouseover:"Prado.WebUI.TTextHighlighter.hover(this)",onmouseout:"Prado.WebUI.TTextHighlighter.out(this)"}; +var div=DIV({className:"copycode"},A(_450,"Copy Code")); document.write(DIV(null,div).innerHTML); }}; Object.extend(Prado.WebUI.TTextHighlighter,{copy:function(obj){ -var _442=obj.parentNode.parentNode.parentNode; +var _451=obj.parentNode.parentNode.parentNode; var text=""; -for(var i=0;i<_442.childNodes.length;i++){ -var node=_442.childNodes[i]; +for(var i=0;i<_451.childNodes.length;i++){ +var node=_451.childNodes[i]; if(node.innerText){ text+=node.innerText=="Copy Code"?"":node.innerText; }else{ @@ -1959,11 +1978,11 @@ obj.parentNode.className="copycode copycode_hover"; obj.parentNode.className="copycode"; }}); Prado.WebUI.TRatingList=Class.create(); -Prado.WebUI.TRatingList.prototype={selectedIndex:-1,initialize:function(_443){ -this.options=_443; -this.element=$(_443["ID"]); -Element.addClassName(this.element,_443.cssClass); -this.radios=document.getElementsByName(_443.field); +Prado.WebUI.TRatingList.prototype={selectedIndex:-1,initialize:function(_452){ +this.options=_452; +this.element=$(_452["ID"]); +Element.addClassName(this.element,_452.cssClass); +this.radios=document.getElementsByName(_452.field); for(var i=0;i<this.radios.length;i++){ Event.observe(this.radios[i].parentNode,"mouseover",this.hover.bindEvent(this,i)); Event.observe(this.radios[i].parentNode,"mouseout",this.recover.bindEvent(this,i)); @@ -1971,33 +1990,33 @@ Event.observe(this.radios[i].parentNode,"click",this.click.bindEvent(this,i)); } this.caption=CAPTION(); this.element.appendChild(this.caption); -this.selectedIndex=_443.selectedIndex; +this.selectedIndex=_452.selectedIndex; this.setRating(this.selectedIndex); -},hover:function(ev,_444){ +},hover:function(ev,_453){ for(var i=0;i<this.radios.length;i++){ -this.radios[i].parentNode.className=(i<=_444)?"rating_hover":""; +this.radios[i].parentNode.className=(i<=_453)?"rating_hover":""; } -this.setCaption(_444); -},recover:function(ev,_445){ -for(var i=0;i<=_445;i++){ +this.setCaption(_453); +},recover:function(ev,_454){ +for(var i=0;i<=_454;i++){ Element.removeClassName(this.radios[i].parentNode,"rating_hover"); } this.setRating(this.selectedIndex); -},click:function(ev,_446){ +},click:function(ev,_455){ for(var i=0;i<this.radios.length;i++){ -this.radios[i].checked=(i==_446); +this.radios[i].checked=(i==_455); } -this.selectedIndex=_446; -this.setRating(_446); +this.selectedIndex=_455; +this.setRating(_455); if(isFunction(this.options.onChange)){ -this.options.onChange(this,_446); +this.options.onChange(this,_455); } -},setRating:function(_447){ -for(var i=0;i<=_447;i++){ +},setRating:function(_456){ +for(var i=0;i<=_456;i++){ this.radios[i].parentNode.className="rating_selected"; } -this.setCaption(_447); -},setCaption:function(_448){ -this.caption.innerHTML=_448>-1?this.radios[_448].value:this.options.caption; +this.setCaption(_456); +},setCaption:function(_457){ +this.caption.innerHTML=_457>-1?this.radios[_457].value:this.options.caption; }}; diff --git a/framework/Web/Javascripts/js/validator.js b/framework/Web/Javascripts/js/validator.js index e1d0806a..b5321743 100644 --- a/framework/Web/Javascripts/js/validator.js +++ b/framework/Web/Javascripts/js/validator.js @@ -144,7 +144,7 @@ var _42=Prado.Validation.validators; for(var i=0;i<_42.length;i++){ _42[i].enabled=!_42[i].control||undef(_42[i].control.form)||_42[i].control.form==_40; _42[i].visible=Prado.Validation.IsGroupValidation?_42[i].inActiveGroup():true; -if(Prado.Validation.HasTargetGroup){ +if(Prado.Validation.HasTargetGroup||_42[i].group){ if(_42[i].group!=Prado.Validation.CurrentTargetGroup){ _42[i].enabled=false; } diff --git a/framework/Web/Javascripts/prado/controls.js b/framework/Web/Javascripts/prado/controls.js index 1d274fd8..0f736f91 100644 --- a/framework/Web/Javascripts/prado/controls.js +++ b/framework/Web/Javascripts/prado/controls.js @@ -69,12 +69,58 @@ Prado.WebUI.ClickableComponent = Prado.WebUI.createPostBackComponent( });
Prado.WebUI.TLinkButton = Prado.WebUI.ClickableComponent;
-Prado.WebUI.TImageButton = Prado.WebUI.ClickableComponent;
Prado.WebUI.TCheckBox = Prado.WebUI.ClickableComponent;
Prado.WebUI.TBulletedList = Prado.WebUI.ClickableComponent;
Prado.WebUI.TImageMap = Prado.WebUI.ClickableComponent;
/**
+ * TImageButton client-side behaviour. With validation, Firefox needs
+ * to capture the x,y point of the clicked image in hidden form fields.
+ */
+Prado.WebUI.TImageButton = Class.create();
+Object.extend(Prado.WebUI.TImageButton.prototype,Prado.WebUI.ClickableComponent.prototype);
+Object.extend(Prado.WebUI.TImageButton.prototype,
+{
+ /**
+ * Only add the hidden inputs once.
+ */
+ hasXYInput : false,
+
+ /**
+ * Override parent onPostBack function, tried to add hidden forms
+ * inputs to capture x,y clicked point.
+ */
+ onPostBack : function(event, options)
+ {
+ if(!this.hasXYInput)
+ {
+ this.addXYInput(event,options);
+ this.hasXYInput = true;
+ }
+ Prado.PostBack(event, options);
+ },
+
+ /**
+ * Add hidden inputs to capture the x,y point clicked on the image.
+ * @param event DOM click event.
+ * @param array image button options.
+ */
+ addXYInput : function(event,options)
+ {
+ var imagePos = Position.cumulativeOffset(this.element);
+ var clickedPos = [event.clientX, event.clientY];
+ var x = clickedPos[0]-imagePos[0]+1;
+ var y = clickedPos[1]-imagePos[1]+1;
+ var id = options['EventTarget'];
+ var x_input = INPUT({type:'hidden',name:id+'_x',value:x});
+ var y_input = INPUT({type:'hidden',name:id+'_y',value:y});
+ this.element.parentNode.appendChild(x_input);
+ this.element.parentNode.appendChild(y_input);
+ }
+});
+
+
+/**
* Radio button, only initialize if not already checked.
*/
Prado.WebUI.TRadioButton = Prado.WebUI.createPostBackComponent(Prado.WebUI.ClickableComponent.prototype);
diff --git a/framework/Web/Javascripts/prado/form.js b/framework/Web/Javascripts/prado/form.js index 059aab5f..d2286b23 100644 --- a/framework/Web/Javascripts/prado/form.js +++ b/framework/Web/Javascripts/prado/form.js @@ -104,11 +104,18 @@ Prado.PostBack = function(event,options) var canSubmit = true;
if(options['CausesValidation'] && Prado.Validation)
{
+ var valid = true;
if(options['ValidationGroup'])
- Prado.Validation.SetActiveGroup(Event.element(event), options['ValidationGroup']);
+ {
+ valid = Prado.Validation.ValidateValidationGroup(options['ValidationGroup']);
+ // Prado.Validation.SetActiveGroup(Event.element(event), options['ValidationGroup']);
+ }
else
- Prado.Validation.SetActiveGroup(null,null);
- if(Prado.Validation.IsValid(form) == false)
+ {
+ valid = Prado.Validation.ValidateNonGroup(form);
+ }
+
+ if(!valid)
{
if(options['StopEvent']) Event.stop(event);
return;
diff --git a/framework/Web/Javascripts/prado/validation.js b/framework/Web/Javascripts/prado/validation.js index e7e45b2c..ba68becc 100644 --- a/framework/Web/Javascripts/prado/validation.js +++ b/framework/Web/Javascripts/prado/validation.js @@ -301,7 +301,7 @@ Prado.Validation.IsValid = function(form) //when group validation, only validators in the active group are visible.
validators[i].visible = Prado.Validation.IsGroupValidation ? validators[i].inActiveGroup() : true;
- if(Prado.Validation.HasTargetGroup)
+ if(Prado.Validation.HasTargetGroup || validators[i].group)
{
if(validators[i].group != Prado.Validation.CurrentTargetGroup)
validators[i].enabled = false;
@@ -739,6 +739,7 @@ Prado.Validation.ValidateValidationGroup= function(groupId) return Prado.Validation.IsValid(target.form);
}
}
+
return true;
};
diff --git a/framework/Web/UI/WebControls/TImageButton.php b/framework/Web/UI/WebControls/TImageButton.php index e5e5f3b9..655b1df0 100644 --- a/framework/Web/UI/WebControls/TImageButton.php +++ b/framework/Web/UI/WebControls/TImageButton.php @@ -124,6 +124,7 @@ class TImageButton extends TImage implements IPostBackDataHandler, IPostBackEven $options['ID'] = $this->getClientID();
$options['CausesValidation'] = $this->getCausesValidation();
$options['ValidationGroup'] = $this->getValidationGroup();
+ $options['EventTarget'] = $this->getUniqueID();
return $options;
}
|