From 8b3da74fc0a2ba58209fbb5528644f479e2fc6c8 Mon Sep 17 00:00:00 2001 From: Alexander Makarov Date: Sat, 8 Sep 2018 02:12:34 +0300 Subject: [PATCH] Fixed #14901: fixed both implementation and test of trim() JavaScript validator --- framework/assets/yii.validation.js | 4 +--- tests/js/tests/yii.validation.test.js | 29 +++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/framework/assets/yii.validation.js b/framework/assets/yii.validation.js index 7809b6f9fa..16a74f03ca 100644 --- a/framework/assets/yii.validation.js +++ b/framework/assets/yii.validation.js @@ -238,9 +238,7 @@ yii.validation = (function ($) { trim: function ($form, attribute, options, value) { var $input = $form.find(attribute.input); - var isCheckAble = $input.find('[type=radio]').is('[type=radio]') || $input.find('[type=checkbox]').is('[type=checkbox]'); - - if (!isCheckAble) { + if ($input.is(':checkbox, :radio')) { return value; } diff --git a/tests/js/tests/yii.validation.test.js b/tests/js/tests/yii.validation.test.js index 70402c400e..65fa1b3a30 100644 --- a/tests/js/tests/yii.validation.test.js +++ b/tests/js/tests/yii.validation.test.js @@ -1214,6 +1214,9 @@ describe('yii.validation', function () { var $input = { val: function () { return getInputVal(); + }, + is: function () { + return false; } }; var $form = { @@ -1274,6 +1277,32 @@ describe('yii.validation', function () { }); }); + describe('trim filter on checkbox', function () { + var attribute = {input: '#input-id'}; + var getInputVal; + var $checkbox = { + is: function (selector) { + if (selector === ':checked') { + return true; + } + + if (selector === ':checkbox, :radio') { + return true; + } + } + }; + var $form = { + find: function () { + return $checkbox; + } + }; + + + it('should be left as is', function () { + assert.strictEqual(yii.validation.trim($form, attribute, {}, true), true); + }); + }); + describe('captcha validator', function () { // Converted using yii\captcha\CaptchaAction generateValidationHash() method var hashes = {'Code': 379, 'code': 411};