Commit 5069c29b by Qiang Xue

Finished js validation for URL validator.

parent 4b30fe8b
......@@ -81,6 +81,16 @@ yii.validation = (function ($) {
valid || messages.push(options.message);
},
regularExpression: function (value, messages, options) {
if (options.skipOnEmpty && isEmpty(value)) {
return;
}
if (!value.match(options.pattern)) {
messages.push(options.message)
}
},
email: function (value, messages, options) {
if (options.skipOnEmpty && isEmpty(value)) {
return;
......@@ -91,14 +101,18 @@ yii.validation = (function ($) {
valid || messages.push(options.message);
},
regularExpression: function (value, messages, options) {
url: function (value, messages, options) {
if (options.skipOnEmpty && isEmpty(value)) {
return;
}
if (options.defaultScheme && !value.match(/:\/\//)) {
value = options.defaultScheme + '://' + value;
}
if (!value.match(options.pattern)) {
messages.push(options.message)
messages.push(options.message);
}
}
},
};
})(jQuery);
......@@ -8,7 +8,6 @@
namespace yii\validators;
use Yii;
use yii\helpers\FileHelper;
use yii\web\UploadedFile;
/**
......
......@@ -8,6 +8,9 @@
namespace yii\validators;
use Yii;
use yii\helpers\Html;
use yii\helpers\JsExpression;
use yii\helpers\Json;
/**
* UrlValidator validates that the attribute value is a valid http or https URL.
......@@ -100,40 +103,27 @@ class UrlValidator extends Validator
*/
public function clientValidateAttribute($object, $attribute)
{
$message = strtr($this->message, array(
'{attribute}' => $object->getAttributeLabel($attribute),
'{value}' => $object->$attribute,
));
if (strpos($this->pattern, '{schemes}') !== false) {
$pattern = str_replace('{schemes}', '(' . implode('|', $this->validSchemes) . ')', $this->pattern);
} else {
$pattern = $this->pattern;
}
$js = "
if(!value.match($pattern)) {
messages.push(" . json_encode($message) . ");
}
";
if ($this->defaultScheme !== null) {
$js = "
if(!value.match(/:\\/\\//)) {
value=" . json_encode($this->defaultScheme) . "+'://'+value;
}
$js
";
}
$options = array(
'pattern' => new JsExpression($pattern),
'message' => Html::encode(strtr($this->message, array(
'{attribute}' => $object->getAttributeLabel($attribute),
'{value}' => $object->$attribute,
))),
);
if ($this->skipOnEmpty) {
$js = "
if($.trim(value)!='') {
$js
}
";
$options['skipOnEmpty'] = 1;
}
if ($this->defaultScheme !== null) {
$options['defaultScheme'] = $this->defaultScheme;
}
return $js;
return 'yii.validation.url(value, messages, ' . Json::encode($options) . ');';
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment