summaryrefslogtreecommitdiff
path: root/framework/Web/Javascripts/prado
diff options
context:
space:
mode:
authorxue <>2006-04-14 12:55:01 +0000
committerxue <>2006-04-14 12:55:01 +0000
commita66e3a8afb63d472b3ec92a406538dfc0a492efb (patch)
treea7b78fef549ee487027133f3db7095aabbe97dba /framework/Web/Javascripts/prado
parentf6a5e7589396854e10e023c25237b47e512ff047 (diff)
merge from branch 3.0 till 908.
Diffstat (limited to 'framework/Web/Javascripts/prado')
-rw-r--r--framework/Web/Javascripts/prado/controls.js48
-rw-r--r--framework/Web/Javascripts/prado/form.js13
-rw-r--r--framework/Web/Javascripts/prado/validation.js3
3 files changed, 59 insertions, 5 deletions
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;
};