diff options
Diffstat (limited to 'framework/Web/UI/WebControls')
| -rw-r--r-- | framework/Web/UI/WebControls/TBaseValidator.php | 8 | ||||
| -rw-r--r-- | framework/Web/UI/WebControls/TCustomValidator.php | 25 | 
2 files changed, 28 insertions, 5 deletions
diff --git a/framework/Web/UI/WebControls/TBaseValidator.php b/framework/Web/UI/WebControls/TBaseValidator.php index 56239bcb..b418885c 100644 --- a/framework/Web/UI/WebControls/TBaseValidator.php +++ b/framework/Web/UI/WebControls/TBaseValidator.php @@ -496,7 +496,7 @@ abstract class TBaseValidator extends TLabel implements IValidator  		$this->setIsValid(true);  		$this->onValidate();  		if($this->getVisible(true) && $this->getEnabled(true)) -		{ +		{			  			// if the target is not a disabled web control  			if(($target=$this->getValidationTarget())!==null && !($target instanceof TWebControl && !$target->getEnabled(true)))  			{ @@ -512,6 +512,12 @@ abstract class TBaseValidator extends TLabel implements IValidator  					$this->onValidationError();  				}  			} +			else +			{ +				$this->evaluateIsValid(); +				$this->setIsValid(true); +				$this->onValidationSuccess(); +			}  		}  		return $this->getIsValid();  	} diff --git a/framework/Web/UI/WebControls/TCustomValidator.php b/framework/Web/UI/WebControls/TCustomValidator.php index fe540c80..0b82ac5c 100644 --- a/framework/Web/UI/WebControls/TCustomValidator.php +++ b/framework/Web/UI/WebControls/TCustomValidator.php @@ -4,7 +4,7 @@   *
   * @author Qiang Xue <qiang.xue@gmail.com>
   * @link http://www.pradosoft.com/
 - * @copyright Copyright © 2005-2008 PradoSoft + * @copyright Copyright © 2005-2008 PradoSoft
   * @license http://www.pradosoft.com/license/
   * @version $Id$
   * @package System.Web.UI.WebControls
 @@ -88,7 +88,9 @@ class TCustomValidator extends TBaseValidator  	 */
  	public function evaluateIsValid()
  	{
 -		$value=$this->getValidationValue($this->getValidationTarget());
 +		$value = '';
 +		if($this->getValidationTarget()!==null)
 +			$value=$this->getValidationValue($this->getValidationTarget());
  		return $this->onServerValidate($value);
  	}
 @@ -105,9 +107,24 @@ class TCustomValidator extends TBaseValidator  	{
  		$param=new TServerValidateEventParameter($value,true);
  		$this->raiseEvent('OnServerValidate',$this,$param);
 -		return $param->getIsValid();
 +		if($this->getValidationTarget()==null)
 +			return true;
 +		else
 +			return $param->getIsValid();
 +	}
 +	
 +	/**
 +	 * @return TControl control to be validated. Null if no control is found.
 +	 */
 +	protected function getValidationTarget()
 +	{
 +		if(($id=$this->getControlToValidate())!=='' && ($control=$this->findControl($id))!==null)
 +			return $control;
 +		else if(($id=$this->getControlToValidate())!=='')
 +			throw new TInvalidDataTypeException('basevalidator_validatable_required',get_class($this));
 +		else
 +			return null;
  	}
 -
  	/**
  	 * Returns an array of javascript validator options.
  | 
