diff --git a/Nette/Forms/Controls/FormControl.php b/Nette/Forms/Controls/FormControl.php index fedf39229c..60dfbf0dba 100644 --- a/Nette/Forms/Controls/FormControl.php +++ b/Nette/Forms/Controls/FormControl.php @@ -563,7 +563,7 @@ public static function validateEqual(IFormControl $control, $arg) $value = $control->getValue(); foreach ((is_array($value) ? $value : array($value)) as $val) { foreach ((is_array($arg) ? $arg : array($arg)) as $item) { - if ($val === (string) ($item instanceof IFormControl ? $item->value : $item)) { + if ((string) $val === (string) ($item instanceof IFormControl ? $item->value : $item)) { return TRUE; } } diff --git a/Nette/Forms/Renderers/InstantClientScript.php b/Nette/Forms/Renderers/InstantClientScript.php index f8763f643b..19263391dd 100644 --- a/Nette/Forms/Renderers/InstantClientScript.php +++ b/Nette/Forms/Renderers/InstantClientScript.php @@ -216,10 +216,11 @@ private function getClientScript(IFormControl $control, $operation, $arg) return 'res = /^.+\.[a-z]{2,6}(\\/.*)?$/i.test(nette.getValue('.$elem.'));'; case $operation === ':regexp' && $control instanceof TextBase: - if (strncmp($arg, '/', 1)) { - throw new /*\*/InvalidStateException("Regular expression '$arg' must be JavaScript compatible."); + if (!preg_match('#^(/.*/)([imu]*)$#', $arg, $matches)) { + return NULL; // regular expression must be JavaScript compatible } - return "res = nette.getValue($elem).test(val);"; + $arg = $matches[1] . str_replace('u', '', $matches[2]); + return "res = $arg.test(nette.getValue($elem));"; case $operation === ':integer' && $control instanceof TextBase: return "res = /^-?[0-9]+$/.test(nette.getValue($elem));"; diff --git a/Nette/Forms/Renderers/InstantClientScript.phtml b/Nette/Forms/Renderers/InstantClientScript.phtml index 590d82769b..63955f33b0 100644 --- a/Nette/Forms/Renderers/InstantClientScript.phtml +++ b/Nette/Forms/Renderers/InstantClientScript.phtml @@ -81,7 +81,9 @@ nette.validateForm = function(sender) { for (var name in validators) { var error = validators[name](sender); if (error) { - form[name].focus(); + if (form[name].focus) { + form[name].focus(); + } alert(error); return false; } diff --git a/Nette/loader.php b/Nette/loader.php index 9a5ea7fbc5..2e1aaefe55 100644 --- a/Nette/loader.php +++ b/Nette/loader.php @@ -24,14 +24,14 @@ throw new Exception('Nette Framework requires PHP 5.2.0 or newer.'); } -/**/require dirname(__FILE__) . '/compatibility/PHP.php';/**/ -require dirname(__FILE__) . '/exceptions.php'; -require dirname(__FILE__) . '/Framework.php'; -require dirname(__FILE__) . '/Object.php'; -require dirname(__FILE__) . '/ObjectMixin.php'; -require dirname(__FILE__) . '/Loaders/LimitedScope.php'; -require dirname(__FILE__) . '/Loaders/AutoLoader.php'; -require dirname(__FILE__) . '/Loaders/NetteLoader.php'; +/**/require_once dirname(__FILE__) . '/compatibility/PHP.php';/**/ +require_once dirname(__FILE__) . '/exceptions.php'; +require_once dirname(__FILE__) . '/Framework.php'; +require_once dirname(__FILE__) . '/Object.php'; +require_once dirname(__FILE__) . '/ObjectMixin.php'; +require_once dirname(__FILE__) . '/Loaders/LimitedScope.php'; +require_once dirname(__FILE__) . '/Loaders/AutoLoader.php'; +require_once dirname(__FILE__) . '/Loaders/NetteLoader.php'; /*Nette\Loaders\*/NetteLoader::getInstance()->base = dirname(__FILE__); diff --git a/tests/Forms/Forms.example.001.expect b/tests/Forms/Forms.example.001.expect index 8b4f786744..3b14983b8c 100644 --- a/tests/Forms/Forms.example.001.expect +++ b/tests/Forms/Forms.example.001.expect @@ -207,7 +207,9 @@ nette.validateForm = function(sender) { for (var name in validators) { var error = validators[name](sender); if (error) { - form[name].focus(); + if (form[name].focus) { + form[name].focus(); + } alert(error); return false; } diff --git a/tests/Forms/Forms.example.004.expect b/tests/Forms/Forms.example.004.expect index 0712460dd5..d0cd024bc3 100644 --- a/tests/Forms/Forms.example.004.expect +++ b/tests/Forms/Forms.example.004.expect @@ -255,7 +255,9 @@ nette.validateForm = function(sender) { for (var name in validators) { var error = validators[name](sender); if (error) { - form[name].focus(); + if (form[name].focus) { + form[name].focus(); + } alert(error); return false; } diff --git a/tests/Forms/Forms.example.007.expect b/tests/Forms/Forms.example.007.expect index ac30da5a80..20a0911554 100644 --- a/tests/Forms/Forms.example.007.expect +++ b/tests/Forms/Forms.example.007.expect @@ -172,7 +172,9 @@ nette.validateForm = function(sender) { for (var name in validators) { var error = validators[name](sender); if (error) { - form[name].focus(); + if (form[name].focus) { + form[name].focus(); + } alert(error); return false; } diff --git a/tests/Forms/Forms.example.submit.001.expect b/tests/Forms/Forms.example.submit.001.expect index cfb08446d9..8c8ca9239b 100644 --- a/tests/Forms/Forms.example.submit.001.expect +++ b/tests/Forms/Forms.example.submit.001.expect @@ -39,6 +39,10 @@ @@ -214,7 +218,9 @@ nette.validateForm = function(sender) { for (var name in validators) { var error = validators[name](sender); if (error) { - form[name].focus(); + if (form[name].focus) { + form[name].focus(); + } alert(error); return false; } diff --git a/tests/Forms/Forms.example.submit.004.expect b/tests/Forms/Forms.example.submit.004.expect index 6396c51274..ec8f514bbe 100644 --- a/tests/Forms/Forms.example.submit.004.expect +++ b/tests/Forms/Forms.example.submit.004.expect @@ -265,7 +265,9 @@ nette.validateForm = function(sender) { for (var name in validators) { var error = validators[name](sender); if (error) { - form[name].focus(); + if (form[name].focus) { + form[name].focus(); + } alert(error); return false; } diff --git a/tests/Forms/Forms.example.submit.007.expect b/tests/Forms/Forms.example.submit.007.expect index 62bd914259..31ce62ed5d 100644 --- a/tests/Forms/Forms.example.submit.007.expect +++ b/tests/Forms/Forms.example.submit.007.expect @@ -194,7 +194,9 @@ nette.validateForm = function(sender) { for (var name in validators) { var error = validators[name](sender); if (error) { - form[name].focus(); + if (form[name].focus) { + form[name].focus(); + } alert(error); return false; }