From acbeaa0255f86bf88f35a1192ec05bfc0d5ac92b Mon Sep 17 00:00:00 2001
From: wei <>
Date: Sun, 1 Apr 2007 07:00:25 +0000
Subject: Fix default button not firing in IE if no validator is assigned to
 the button

---
 framework/Web/UI/WebControls/TButton.php      |  6 +++---
 framework/Web/UI/WebControls/TImageButton.php | 11 ++++++++++-
 2 files changed, 13 insertions(+), 4 deletions(-)

(limited to 'framework')

diff --git a/framework/Web/UI/WebControls/TButton.php b/framework/Web/UI/WebControls/TButton.php
index 304710e9..aa4e21a7 100644
--- a/framework/Web/UI/WebControls/TButton.php
+++ b/framework/Web/UI/WebControls/TButton.php
@@ -88,7 +88,7 @@ class TButton extends TWebControl implements IPostBackEventHandler, IButtonContr
 		$writer->addAttribute('value',$this->getText());
 		if($this->getEnabled(true))
 		{
-			if($this->needPostBackScript() && $this->getEnableClientScript())
+			if($this->getEnableClientScript() && $this->needPostBackScript())
 				$this->renderClientControlScript($writer);
 		}
 		else if($this->getEnabled()) // in this case, parent will not render 'disabled'
@@ -135,8 +135,8 @@ class TButton extends TWebControl implements IPostBackEventHandler, IButtonContr
 	 */
 	protected function needPostBackScript()
 	{
-		return $this->canCauseValidation() || ($this->getButtonType()!==TButtonType::Submit &&
-			($this->hasEventHandler('OnClick') || $this->hasEventHandler('OnCommand')));
+		//IE needs JS to be rendered for default button to work if no validators are assigned to this button
+		return $this->canCauseValidation() || $this->hasEventHandler('OnClick') || $this->hasEventHandler('OnCommand');
 	}
 
 	/**
diff --git a/framework/Web/UI/WebControls/TImageButton.php b/framework/Web/UI/WebControls/TImageButton.php
index f5c331c1..41de5087 100644
--- a/framework/Web/UI/WebControls/TImageButton.php
+++ b/framework/Web/UI/WebControls/TImageButton.php
@@ -105,7 +105,7 @@ class TImageButton extends TImage implements IPostBackDataHandler, IPostBackEven
 			$writer->addAttribute('name',$uniqueID);
 		if($this->getEnabled(true))
 		{
-			if($this->getEnableClientScript() && $this->canCauseValidation())
+			if($this->getEnableClientScript() && $this->needPostBackScript())
 				$this->renderClientControlScript($writer);
 		}
 		else if($this->getEnabled()) // in this case, parent will not render 'disabled'
@@ -147,6 +147,15 @@ class TImageButton extends TImage implements IPostBackDataHandler, IPostBackEven
 			return false;
 	}
 
+	/**
+	 * @return boolean whether the button needs javascript to do postback
+	 */
+	protected function needPostBackScript()
+	{
+		//IE needs JS to be rendered for default button to work if no validators are assigned to this button
+		return $this->canCauseValidation() || $this->hasEventHandler('OnClick') || $this->hasEventHandler('OnCommand');
+	}
+
 	/**
 	 * Returns postback specifications for the button.
 	 * This method is used by framework and control developers.
-- 
cgit v1.2.3