From 90bc19ec007ede40268b5fe5df38fe29b1b0ece2 Mon Sep 17 00:00:00 2001 From: xue <> Date: Tue, 30 May 2006 11:49:38 +0000 Subject: onClick javascript event triggered twice on CheckBox label --- framework/Web/UI/WebControls/TCheckBox.php | 15 +++++++++++---- framework/Web/UI/WebControls/TRadioButton.php | 5 ++++- 2 files changed, 15 insertions(+), 5 deletions(-) (limited to 'framework') diff --git a/framework/Web/UI/WebControls/TCheckBox.php b/framework/Web/UI/WebControls/TCheckBox.php index 681c8748..3eb486f3 100644 --- a/framework/Web/UI/WebControls/TCheckBox.php +++ b/framework/Web/UI/WebControls/TCheckBox.php @@ -240,6 +240,8 @@ class TCheckBox extends TWebControl implements IPostBackDataHandler, IValidatabl { $attributes=$this->getAttributes(); $value=$attributes->remove('value'); + // onclick js should only be added to input tag + $onclick=$attributes->remove('onclick'); if($attributes->getCount()) { $writer->addAttributes($attributes); @@ -248,6 +250,8 @@ class TCheckBox extends TWebControl implements IPostBackDataHandler, IValidatabl if($value!==null) $attributes->add('value',$value); } + else + $onclick=''; if($needSpan) $writer->renderBeginTag('span'); $clientID=$this->getClientID(); @@ -256,16 +260,16 @@ class TCheckBox extends TWebControl implements IPostBackDataHandler, IValidatabl if($this->getTextAlign()==='Left') { $this->renderLabel($writer,$clientID,$text); - $this->renderInputTag($writer,$clientID); + $this->renderInputTag($writer,$clientID,$onclick); } else { - $this->renderInputTag($writer,$clientID); + $this->renderInputTag($writer,$clientID,$onclick); $this->renderLabel($writer,$clientID,$text); } } else - $this->renderInputTag($writer,$clientID); + $this->renderInputTag($writer,$clientID,$onclick); if($needSpan) $writer->renderEndTag(); } @@ -334,14 +338,17 @@ class TCheckBox extends TWebControl implements IPostBackDataHandler, IValidatabl * Renders a checkbox input element. * @param THtmlWriter the writer for the rendering purpose * @param string checkbox id + * @param string onclick js */ - protected function renderInputTag($writer,$clientID) + protected function renderInputTag($writer,$clientID,$onclick) { if($clientID!=='') $writer->addAttribute('id',$clientID); $writer->addAttribute('type','checkbox'); if(($value = $this->getValueAttribute()) !== '') $writer->addAttribute('value',$value); + if($onclick!=='') + $writer->addAttribute('onclick',$onclick); if(($uniqueID=$this->getUniqueID())!=='') $writer->addAttribute('name',$uniqueID); if($this->getChecked()) diff --git a/framework/Web/UI/WebControls/TRadioButton.php b/framework/Web/UI/WebControls/TRadioButton.php index 9a523b55..2ccda96b 100644 --- a/framework/Web/UI/WebControls/TRadioButton.php +++ b/framework/Web/UI/WebControls/TRadioButton.php @@ -139,14 +139,17 @@ class TRadioButton extends TCheckBox * Renders a radiobutton input element. * @param THtmlWriter the writer for the rendering purpose * @param string checkbox id + * @param string onclick js */ - protected function renderInputTag($writer,$clientID) + protected function renderInputTag($writer,$clientID,$onclick) { if($clientID!=='') $writer->addAttribute('id',$clientID); $writer->addAttribute('type','radio'); $writer->addAttribute('name',$this->getUniqueGroupName()); $writer->addAttribute('value',$this->getValueAttribute()); + if($onclick!=='') + $writer->addAttribute('onclick',$onclick); if($this->getChecked()) $writer->addAttribute('checked','checked'); if(!$this->getEnabled(true)) -- cgit v1.2.3