75% of kids
Over 100,000
67% of parents
say it’s important for them
to manage their own screen time
educational tasks are completed
by kids on Kids360 every day
say that kids are motivated to
complete tasks for screen time rewards

Tasks for Kids

Reward your child with screen time for completing educational activities
Kids360 Features
75% of kids
Over 100,000
67% of parents
Kids360

A Kind of Care that Kids Can Enjoy

A Kind of Care that Kids Can Enjoy

Your child can earn screen time by completing over 4,600 developmental tasks

Logic, Focus, and Thinking Tasks

Custom Tasks from Parents

Create your own tasks and reward your kid with additional phone time

Exercise and Physical Activity

Encourage physical health by rewarding screen time in exchange for exercise
9
1
4
Сompleted:
Left

Helping Kids Use Time Wisely

We notify them about their remaining time in apps, show usage statistics, and provide clear limits

More Kids360 Features

More Kids360 Features

Web
Filtering
App Usage
Statistics
App
Blocker
Location
Tracking
Screen
Time Limits
Loud
Signal
Web Filtering
Screen Time Limits
App Blocker
Location Tracking
Developmental
Tasks for Kids
Loud Signal

Set Up Developmental Tasks in Just 5 Minutes

Set Up Developmental Tasks in Just 5 Minutes

Easy setup and user-friendly parental controls. Access any app function with just 1 tap!
Download the Kids360 app on your phone
1
Install the Alli360 app on your child’s phone
2
Surround your child with care
3

What Parents Are Saying

What Parents Are Saying

Great app for parents! I set limits on YouTube and gaming, and my son is now spending more time on schoolwork. It’s been a big help, highly recommend it!
September 15, 2024
from Google Play
Mei
Super handy! I can easily monitor what my daughter watches online and limit her social media time. It’s a game-changer for our family!
June 9, 2024
from Google Play
Matthew
Finally found a solution to stop my kids from using their devices late at night. The app turns off games automatically, and no more bedtime arguments. A real lifesaver!
January 20, 2024
from App Store

Sarah
Amazing app! We’ve been using it for a few months, and it’s really helped with screen time and kids motivation, thank you!
November 1, 2023
from Google Play

Ashley
Fantastic app! My 5-year-old's tablet time is now under control. Setting limits was easy. No more fights over cartoons!
August 20, 2024
from Huawei AppGallery
Jessica
'); $(sld1.find('div[number="' + i + '"]')).append($(zero1[i])); }; sld1.slick({ slidesToShow: 2, slidesToScroll: 1, centerMode: true, centerPadding: '0px', speed: 1000, arrows: Boolean(sld1.closest('.t396__artboard').find('.v-next') || document.querySelector('.v-next1')), fade: false, dots: Boolean(sld1.closest('.t396__artboard').find('.sl-dots') || document.querySelector('.sl-dots1')), infinite: false, swipe: true, touchThreshold: 50, responsive: [ { "breakpoint": 320, "settings": { "slidesToShow": 1 } }, { "breakpoint": 480, "settings": { "slidesToShow": 1 } }, { "breakpoint": 640, "settings": { "slidesToShow": 1 } }, { "breakpoint": 960, "settings": { "slidesToShow": 2 } } ], vertical: false, verticalSwiping: false, appendDots: sld1.closest('.t396__artboard').find('.sl-dots'), autoplay: false, swipeToSlide: true, easing: 'easeInOut', adaptiveHeight: false, nextArrow: sld1.closest('.t396__artboard').find('.v-next') || document.querySelector('.v-next1'), prevArrow: sld1.closest('.t396__artboard').find('.v-prev') || document.querySelector('.v-prev1'), }); function redeclare() { for (var i=0; i < zero1.length; i++) { $(sld1.find('div[number="' + i + '"] > .t-rec')).attr('id', $(zero1[i]).attr('id')); }; if (sld1.closest('.t396__artboard').find('.sl-dots').length !== 0) { sld1.closest('.t396__artboard').find('.sl-dots')[0].children[0].childNodes.forEach(element => { element.setAttribute('forslider', '1'); }) }; } redeclare(); $('a[data-slide]').click(function(e) { e.preventDefault(); $(this).data('slide'); }); sld1.on('afterChange', function(event, slick, currentSlide, nextSlide){ if (typeof t_lazyload_update !== "undefined") { t_lazyload_update() } }); setTimeout(function () { sld1.slick('slickSetOption', 'infinite', true, false); sld1.slick('refresh'); redeclare()}, 1001); let vrecId = sld1.closest('.t-rec').attr('id'); let style = document.createElement('style'); style.innerHTML = ` #${vrecId} .slick-slide { transform: scale(0.992); -webkit-transition: -webkit-transform 0.4s; transition: transform 0.4s; } #${vrecId} .slick-current, #${vrecId} [class="slick-slide"] + .slick-cloned, #${vrecId} [class="slick-slide slick-cloned"] + .slick-center[data-slick-index="-1"] { transform: scale(1); } #${vrecId} .slick-current + .slick-slide { transform: scale(0.992); } `; document.body.appendChild(style); }); });

Install the First Parental Control that Kids Enjoy!

downloaded Kids360
parents have already
6146369

Frequently Asked Questions

Frequently Asked Questions

Learn more about Kids360 parental control!

'; let inpList = document.querySelectorAll(redid2 + ' [name="' + inputname + '"]'); if (item.getAttribute('type') == 'radio' && inpList.length >= 1) {} else { inpBox.insertAdjacentHTML('beforeend', gg); } } } }); newInputsList.forEach(function(item) { if (!item.classList.contains("js-tilda-rule")) { var inputname = item.getAttribute('name'); var gg = '
'; inpBox.insertAdjacentHTML('beforeend', gg); } }); newInputsList.forEach(function(item) { if (item.classList.contains("js-tilda-rule") && !item.classList.contains("t-input__own-answer")) { var inputname = item.getAttribute('name'); let zeroChecked = document.querySelectorAll(redid1 + ' [name="' + inputname + '"]:checked'); let zeroNotChecked = document.querySelectorAll(redid1 + ' [name="' + inputname + '"]'); let inp204 = document.querySelector(redid2 + ' [name="' + inputname + '"]'); if (item.getAttribute('type') == 'checkbox' || item.classList.contains('t-radio') || item.classList.contains('t-checkbox') || item.classList.contains('t-img-select')) { if (zeroChecked.length >= 1) { inp204.value = zeroChecked[0].value; localStorage.setItem(inputname, inp204.value); } } else { if (item.getAttribute('type') == 'hidden' && item.classList.contains("t-img-select__hiddeninput") && !item.hasAttribute("value")) { inp204.value = "У поля нет атрибута 'value'. Пожалуйста проверьте настройки!"; } else { inp204.value = zeroNotChecked[0].value; localStorage.setItem(inputname, inp204.value); } } } }); newInputsList.forEach(function(item) { if (!item.classList.contains("js-tilda-rule")) { var inputname = item.getAttribute('name'); let inpList = document.querySelectorAll(redid2 + ' [name="' + inputname + '"]'); let zeroNotChecked = document.querySelector(redid1 + ' [name="' + inputname + '"]'); inpList.forEach(function(el) { el.value = zeroNotChecked.value; localStorage.setItem(inputname, el.value); }); } }); document.querySelectorAll(redid1 + ' .t-upwidget').forEach(function(item) { let parrentsList = getParents(item, 't-input-group'); var inputname = parrentsList[0].cloneNode(true); inpBox.prepend(inputname); }); clickEvent(document.querySelector(redid2 + ' .t-submit')); let formsList = document.querySelectorAll(redid1 + ' form'); formsList.forEach(function(item) { item.reset(); item.querySelectorAll('input[type="tel"]').forEach(function(inp) { if (inp.hasAttribute("data-phonemask-current")) { inp.setAttribute("data-phonemask-current", ""); } }); item.querySelectorAll('input[data-tilda-rule="phone"]').forEach(function(inp) { if (inp.hasAttribute("value")) { inp.value = ""; } }); }); for (let i = 0; i < selectsList.length; i++) { selectsList[i].value = selectsInitValuesList[i]; } for (let i = 0; i < allCheckboxList.length; i++) { if (checkboxInitValuesList[i] == "checked") { allCheckboxList[i].click(); } } for (let i = 0; i < quantityList.length; i++) { quantityList[i].value = quantityInitValuesList[i]; } for (let i = 0; i < rangeList.length; i++) { rangeList[i].value = rangeInitValuesList[i]; rangeTxtList[i].innerHTML = rangeTxtInitValuesList[i]; rangeTxtList[i].style.left = rangeTxtInitStyleList[i]; rangeList[i].closest(".t-input-group").querySelector("style[class*='range']").innerHTML = rangeStyleTagInitList[i]; } for (let i = 0; i < calcsList.length; i++) { calcsList[i].innerHTML = calcsInitValuesList[i]; } document.querySelectorAll(redid1 + ' .t-uploadcare .uploadcare--widget__button_type_remove').forEach(function(item) { item.click(); }); document.querySelectorAll(redid1 + ' .t-upwidget-container__button_fileholder').forEach(function(item) { setTimeout(function() { clickEvent(item); if (item.closest('.t-upwidget-container').querySelector(".t-upwidget-container__data_table_actions_remove")) { clickEvent(item.closest('.t-upwidget-container').querySelector(".t-upwidget-container__data_table_actions_remove svg")); } },100); }); } }); }); var zeroForma = function($form) { let = nlm001; if (window.NolimSuccessFunction803689411.length >= 1) { var hasSuccessUrl = document.querySelector(redid2 + ' form').hasAttribute('data-success-url'); if (hasSuccessUrl) { var successUrl = document.querySelector(redid2 + ' form').getAttribute('data-success-url'); if (successUrl !== undefined && successUrl !== '') { window.location.href = successUrl; } } else { setTimeout(function() { var st = document.querySelector(redid2 + ' .js-successbox').innerHTML; nolimShowSuccessPopup314236537(); document.querySelector('#nolimnolimtildaformsuccesspopuptext').innerHTML = st; if(window.t1093__closePopup) { t1093__closePopup(!0, -1, !0); } }, 0); } } }; if(typeof window.NolimSuccessFunction803689411 == 'undefined') { window.NolimSuccessFunction803689411 = []; window.NolimSuccessFunction803689411[0] = zeroForma; } else { window.NolimSuccessFunction803689411.push(zeroForma); }; window.mySuccessFunction803689411 = function ($form) { for (var i = 0; i < window.NolimSuccessFunction803689411.length; i++) { window.NolimSuccessFunction803689411[i]($form); } }; if (!window.nlm609rec803689411) { function afterSuccessNlm(form) { window.mySuccessFunction803689411(form); if (window.nlm020block803689274) { clickEvent(document.querySelector("#rec803689274 .nolim_popup_close")); } } setInterval(function() { let forms = document.querySelectorAll(redid2 + ' .js-form-proccess'); Array.prototype.forEach.call(forms, function (form) { form.removeEventListener('tildaform:aftersuccess', afterSuccessNlm); form.addEventListener('tildaform:aftersuccess', afterSuccessNlm); }); }, 1000); } zeroBlock.addEventListener("keypress", function(e) { var keyCode = e.keyCode || e.which; let btn = document.querySelectorAll(redid1 + ' [href="' + hurl + '"]'); if (keyCode === 13) { e.preventDefault(); btn[0].click(); return false; } }); }; }, 50); })); function hideErrors(t) { var e, r, o, a, n, i, s; "object" == typeof t && !t.length || (t instanceof Element || (t = t[0]), e = t.querySelectorAll(".js-errorbox-all"), r = t.querySelectorAll(".js-rule-error"), o = t.querySelectorAll(".js-error-rule-all"), a = t.querySelectorAll(".js-successbox"), n = t.querySelectorAll(".js-error-control-box"), i = t.querySelectorAll(".js-error-control-box .t-input-error"), s = document.getElementById("tilda-popup-for-error"), Array.prototype.forEach.call(e, function(t) { t.style.display = "none" }), Array.prototype.forEach.call(r, function(t) { t.style.display = "none" }), Array.prototype.forEach.call(o, function(t) { t.innerHTML = "" }), Array.prototype.forEach.call(a, function(t) { t.style.display = "none" }), Array.prototype.forEach.call(i, function(t) { t.innerHTML = "" }), Array.prototype.forEach.call(n, function(t) { t_removeClass(t, "js-error-control-box") }), t_removeClass(t, "js-send-form-error"), t_removeClass(t, "js-send-form-success")); } function validate(t) { t instanceof Element || (t = t[0]); for (var e, r, o = t.querySelectorAll(".js-tilda-rule"), a = [], n = !0, i = 0; i < o.length; i++) { var s = o[i] , l = !!parseInt(s.getAttribute("data-tilda-req") || 0, 10) , d = s.getAttribute("data-tilda-rule") || "none" , c = "" , u = "" , m = s.getAttribute("data-tilda-rule-minlength") || 0 , p = s.getAttribute("data-tilda-rule-maxlength") || 0 , f = {} , _ = s.value , y = "" , w = s.getAttribute("type") , h = s.getAttribute("name") , g = t.getAttribute("data-formcart"); f.obj = s, f.type = [], _ && _.length && (y = _.replace(/[\s\u0000—\u001F\u2000-\u200F\uFEFF\u2028-\u202F\u205F-\u206F]/gi, ""), _ = _.trim()), 0 < _.length && (n = !1), m = m && parseInt(m, 10), p = p && parseInt(p, 10); var v = !_.length && !y.length , w = "checkbox" === w || "radio" === w , h = !t.querySelectorAll('[name="' + h + '"]:checked').length; if (l && (v || w && h)) f.type.push("req"); else { switch (d) { case "email": c = /^(?!\.)(?!.*\.\.)[a-zA-Zёа-яЁА-Я0-9\u2E80-\u2FD5\u3190-\u319f\u3400-\u4DBF\u4E00-\u9FCC\uF900-\uFAAD_\.\-\+]{0,63}[a-zA-Zёа-яЁА-Я0-9\u2E80-\u2FD5\u3190-\u319f\u3400-\u4DBF\u4E00-\u9FCC\uF900-\uFAAD_\-\+]@[a-zA-Zёа-яЁА-ЯЁёäöüÄÖÜßèéû0-9][a-zA-Zёа-яЁА-ЯЁёäöüÄÖÜßèéû0-9\.\-]{0,253}\.[a-zA-Zёа-яЁА-Я]{2,10}$/gi, _.length && !_.match(c) && f.type.push("email"); break; case "url": c = /^((https?|ftp):\/\/)?[a-zA-Zёа-яЁА-ЯЁёäöüÄÖÜßèéûşç0-9][a-zA-Zёа-яЁА-ЯЁёäöüÄÖÜßèéûşç0-9_\.\-]{0,253}\.[a-zA-Zёа-яЁА-Я]{2,10}\/?$/gi, _.length && ((u = (u = (u = _.split("//")) && 1 < u.length ? u[1] : u[0]).split("/")) && u.length && u[0] ? (u = u[0]).match(c) || f.type.push("url") : (u && !u[0] || f.type.push("url"), u = "")); break; case "phone": var b = s.getAttribute("data-tilda-mask") , E = "^[0-9()+-"; b && (-1 !== b.indexOf("*") ? E += "a-zёа-я" : (-1 !== b.indexOf("a") && (E += "a-z"), -1 !== b.indexOf("а") && (E += "а-яё"))), E += "]+$", c = new RegExp(E,"gi"), (y.length && !y.match(c) || 1 == (u = y.replace(/[^0-9]+/g, "")).indexOf("000") || 1 == u.indexOf("111") || 1 == u.indexOf("222") && "5" != u.substring(0, 1) || 1 == u.indexOf("333") || 1 == u.indexOf("444") || 1 == u.indexOf("555") && "0" != u.substring(0, 1) || 1 == u.indexOf("666") && "0" != u.substring(0, 1) || 1 == u.indexOf("8888") && "4" != u.substring(0, 1)) && f.type.push("phone"); break; case "number": c = /^[0-9]+$/gi, 0 < y.length && !y.match(c) && f.type.push("number"); break; case "date": 0 < y.length && !y.match({ "DD-MM-YYYY": /^(0[1-9]|1[0-9]|2[0-9]|3[01])[\-\.\/](0[1-9]|1[012])[\-\.\/][0-9]{4}$/, "MM-DD-YYYY": /^(0[1-9]|1[012])[\-\.\/](0[1-9]|1[0-9]|2[0-9]|3[01])[\-\.\/][0-9]{4}$/, "YYYY-MM-DD": /^[0-9]{4}[\-\.\/](0[1-9]|1[012])[\-\.\/](0[1-9]|1[0-9]|2[0-9]|3[01])$/ }[s.getAttribute("data-tilda-dateformat")] || /^[0-9]{1,4}[\-\.\/][0-9]{1,2}[\-\.\/][0-9]{1,4}$/gi) && f.type.push("date"); break; case "time": c = /^[0-9]{2}[:\.][0-9]{2}$/gi, 0 < y.length && !y.match(c) && f.type.push("time"); break; case "name": c = /^([ЁёäöüÄÖÜßèéûҐґЄєІіЇїӐӑЙйК̆к̆Ӄ̆ӄ̆Ԛ̆ԛ̆Г̆г̆Ҕ̆ҕ̆ӖӗѢ̆ѣ̆ӁӂꚄ̆ꚅ̆ҊҋО̆о̆Ө̆ө̆Ꚍ̆ꚍ̆ЎўХ̆х̆Џ̆џ̆Ꚏ̆ꚏ̆Ꚇ̆ꚇ̆Ҽ̆ҽ̆Ш̆ш̆Ꚗ̆ꚗ̆Щ̆щ̆Ы̆ы̆Э̆э̆Ю̆ю̆Я̆я̆А́а́ЃѓД́д́Е́е́Ё́ёӘ́ә́З́з́И́и́І́і́Ї́ї́ЌќЛ́л́Н́н́О́о́Р́р́С́с́Т́т́У́у́Ӱ́ӱ́Ү́ү́Х́х́Ц́ц́Ы́ы́Э́э́Ӭ́ӭ́Ю́ю́Ю̈́ю̈́Я́я́Ѣ́ѣ́ҒғӺӻҒ̌ғ̌Ј̵ј̵ҞҟҜҝԞԟӨөҎҏҰұӾӿҸҹҌҍҢңҚқҒғӘәҺһІіҰұҮүӨөȺⱥꜺꜻƂƃɃƀȻȼꞒꞓƋƌĐđɆɇǤǥꞠꞡĦħƗɨƗ́ɨ́Ɨ̀ɨ̀Ɨ̂ɨ̂Ɨ̌ɨ̌Ɨ̃ɨ̃Ɨ̄ɨ̄Ɨ̈ɨ̈Ɨ̋ɨ̋Ɨ̏ɨ̏Ɨ̧ɨ̧Ɨ̧̀ɨ̧̀Ɨ̧̂ɨ̧̂Ɨ̧̌ɨ̧̌ᵼɈɉɟɟ̟ʄʄ̊ʄ̥K̵k̵ꝀꝁꝂꝃꝄꝅꞢꞣŁłł̓Ł̣ł̣ᴌȽƚⱠⱡꝈꝉƛƛ̓ꞤꞥꝊꝋØøǾǿØ̀ø̀Ø̂øØ̌ø̌Ø̄ø̄Ø̃ø̃Ø̨ø̨Ø᷎ø᷎ᴓⱣᵽꝐꝑꝖꝗꝘꝙɌɍꞦꞧꞨꞩẜẝŦŧȾⱦᵺꝤꝥꝦꝧɄʉɄ́ʉ́Ʉ̀ʉ̀Ʉ̂ʉ̂Ʉ̌ʉ̌Ʉ̄ʉ̄Ʉ̃ʉ̃Ʉ̃́ʉ̃́Ʉ̈ʉ̈ʉ̞ᵾU̸u̸ᵿꝞꝟw̸ɎɏƵƶA-Za-z\u00C0\u00C0-\u00C3\u00C8-\u00CA\u00CC\u00CD\u00D2-\u00D9\u00DA\u00DD\u00E0-\u00E3\u00E8\u00E9\u00EA\u00EC\u00ED\u00F2-\u00F5\u00F9\u00FA\u00FD\u0102\u0103\u0110\u0111\u0128\u0129\u0168\u0169\u01A0\u01A1\u01AF\u01B0\u1EA0\u1EA1-\u1EF9\u0027\u2019\u0300-\u03FF\u0400-\u04FF\u0500-\u05FF\u0600-\u06FF\u3040-\u30FF\u0041-\u007A\u00C0-\u02B8\uFB1D-\uFB1F\uFB2A-\uFB4E\u0E00-\u0E7F\u10A0-\u10FF\u3040-\u309F\u30A0-\u30FF\u2E80-\u2FD5\u3190-\u319f\u3400-\u4DBF\u4E00-\u9FCC\uF900-\uFAAD]{1,})([ЁёäöüÄÖÜßèéûҐґЄєІіЇїӐӑЙйК̆к̆Ӄ̆ӄ̆Ԛ̆ԛ̆Г̆г̆Ҕ̆ҕ̆ӖӗѢ̆ѣ̆ӁӂꚄ̆ꚅ̆ҊҋО̆о̆Ө̆ө̆Ꚍ̆ꚍ̆ЎўХ̆х̆Џ̆џ̆Ꚏ̆ꚏ̆Ꚇ̆ꚇ̆Ҽ̆ҽ̆Ш̆ш̆Ꚗ̆ꚗ̆Щ̆щ̆Ы̆ы̆Э̆э̆Ю̆ю̆Я̆я̆А́а́ЃѓД́д́Е́е́Ё́ёӘ́ә́З́з́И́и́І́і́Ї́ї́ЌќЛ́л́Н́н́О́о́Р́р́С́с́Т́т́У́у́Ӱ́ӱ́Ү́ү́Х́х́Ц́ц́Ы́ы́Э́э́Ӭ́ӭ́Ю́ю́Ю̈́ю̈́Я́я́Ѣ́ѣ́ҒғӺӻҒ̌ғ̌Ј̵ј̵ҞҟҜҝԞԟӨөҎҏҰұӾӿҸҹҌҍҢңҚқҒғӘәҺһІіҰұҮүӨөȺⱥꜺꜻƂƃɃƀȻȼꞒꞓƋƌĐđɆɇǤǥꞠꞡĦħƗɨƗ́ɨ́Ɨ̀ɨ̀Ɨ̂ɨ̂Ɨ̌ɨ̌Ɨ̃ɨ̃Ɨ̄ɨ̄Ɨ̈ɨ̈Ɨ̋ɨ̋Ɨ̏ɨ̏Ɨ̧ɨ̧Ɨ̧̀ɨ̧̀Ɨ̧̂ɨ̧̂Ɨ̧̌ɨ̧̌ᵼɈɉɟɟ̟ʄʄ̊ʄ̥K̵k̵ꝀꝁꝂꝃꝄꝅꞢꞣŁłł̓Ł̣ł̣ᴌȽƚⱠⱡꝈꝉƛƛ̓ꞤꞥꝊꝋØøǾǿØ̀ø̀Ø̂øØ̌ø̌Ø̄ø̄Ø̃ø̃Ø̨ø̨Ø᷎ø᷎ᴓⱣᵽꝐꝑꝖꝗꝘꝙɌɍꞦꞧꞨꞩẜẝŦŧȾⱦᵺꝤꝥꝦꝧɄʉɄ́ʉ́Ʉ̀ʉ̀Ʉ̂ʉ̂Ʉ̌ʉ̌Ʉ̄ʉ̄Ʉ̃ʉ̃Ʉ̃́ʉ̃́Ʉ̈ʉ̈ʉ̞ᵾU̸u̸ᵿꝞꝟw̸ɎɏƵƶA-Za-z\u00C0\u00C0-\u00C3\u00C8-\u00CA\u00CC\u00CD\u00D2-\u00D9\u00DA\u00DD\u00E0-\u00E3\u00E8\u00E9\u00EA\u00EC\u00ED\u00F2-\u00F5\u00F9\u00FA\u00FD\u0102\u0103\u0110\u0111\u0128\u0129\u0168\u0169\u01A0\u01A1\u01AF\u01B0\u1EA0\u1EA1-\u1EF9\u0041-\u007A\u00C0-\u02B8\u0300-\u03FF\u0400-\u04FF\u0500-\u05FF\u0600-\u06FF\u3040-\u30FF\uFB1D-\uFB1F\uFB2A-\uFB4E\u0E00-\u0E7F\u10A0-\u10FF\u3040-\u309F\u30A0-\u30FF\u2E80-\u2FD5\u3190-\u319f\u3400-\u4DBF\u4E00-\u9FCC\uF900-\uFAAD\-\'\‘\s\.]{0,})$/gi, _.length && !_.match(c) && f.type.push("name"); break; case "nameeng": c = /^([A-Za-z\s]{1,}((\-)?[A-Za-z\.\s](\')?){0,})*$/i, _.length && !_.match(c) && f.type.push("nameeng"); break; case "namerus": c = /^([А-Яа-яЁё\s]{1,}((\-)?[А-Яа-яЁё\.\s](\')?){0,})*$/i, _.length && !_.match(c) && f.type.push("namerus"); break; case "string": c = /^[A-Za-zА-Яа-я0-9ЁёЁёäöüÄÖÜßèéûӐӑЙйК̆к̆Ӄ̆ӄ̆Ԛ̆ԛ̆Г̆г̆Ҕ̆ҕ̆ӖӗѢ̆ѣ̆ӁӂꚄ̆ꚅ̆ҊҋО̆о̆Ө̆ө̆Ꚍ̆ꚍ̆ЎўХ̆х̆Џ̆џ̆Ꚏ̆ꚏ̆Ꚇ̆ꚇ̆Ҽ̆ҽ̆Ш̆ш̆Ꚗ̆ꚗ̆Щ̆щ̆Ы̆ы̆Э̆э̆Ю̆ю̆Я̆я̆А́а́ЃѓД́д́Е́е́Ё́ёӘ́ә́З́з́И́и́І́і́Ї́ї́ЌќЛ́л́Н́н́О́о́Р́р́С́с́Т́т́У́у́Ӱ́ӱ́Ү́ү́Х́х́Ц́ц́Ы́ы́Э́э́Ӭ́ӭ́Ю́ю́Ю̈́ю̈́Я́я́Ѣ́ѣ́ҒғӺӻҒ̌ғ̌Ј̵ј̵ҞҟҜҝԞԟӨөҎҏҰұӾӿҸҹҌҍҢңҚқҒғӘәҺһІіҰұҮүӨөȺⱥꜺꜻƂƃɃƀȻȼꞒꞓƋƌĐđɆɇǤǥꞠꞡĦħƗɨƗ́ɨ́Ɨ̀ɨ̀Ɨ̂ɨ̂Ɨ̌ɨ̌Ɨ̃ɨ̃Ɨ̄ɨ̄Ɨ̈ɨ̈Ɨ̋ɨ̋Ɨ̏ɨ̏Ɨ̧ɨ̧Ɨ̧̀ɨ̧̀Ɨ̧̂ɨ̧̂Ɨ̧̌ɨ̧̌ᵼɈɉɟɟ̟ʄʄ̊ʄ̥K̵k̵ꝀꝁꝂꝃꝄꝅꞢꞣŁłł̓Ł̣ł̣ᴌȽƚⱠⱡꝈꝉƛƛ̓ꞤꞥꝊꝋØøǾǿØ̀ø̀Ø̂øØ̌ø̌Ø̄ø̄Ø̃ø̃Ø̨ø̨Ø᷎ø᷎ᴓⱣᵽꝐꝑꝖꝗꝘꝙɌɍꞦꞧꞨꞩẜẝŦŧȾⱦᵺꝤꝥꝦꝧɄʉɄ́ʉ́Ʉ̀ʉ̀Ʉ̂ʉ̂Ʉ̌ʉ̌Ʉ̄ʉ̄Ʉ̃ʉ̃Ʉ̃́ʉ̃́Ʉ̈ʉ̈ʉ̞ᵾU̸u̸ᵿꝞꝟw̸ɎɏƵƶ\u0041-\u007A\u00C0-\u02B8\u0300-\u03FF\u0400-\u04FF\u0500-\u05FF\u0600-\u06FF\u3040-\u30FF\uFB1D-\uFB1F\uFB2A-\uFB4E\u0E00-\u0E7F\u10A0-\u10FF\u3040-\u309F\u30A0-\u30FF\u2E80-\u2FD5\u3190-\u319f\u3400-\u4DBF\u4E00-\u9FCC\uF900-\uFAAD,\.:;\"\'`\-\_\+\?\!\%\$\@\*\&\^\s]$/i, _.length && !_.match(c) && f.type.push("string"); break; case "chosevalue": "true" === s.getAttribute("data-option-selected") || f.type.push("chosevalue"); break; case "promocode": "y" !== g || !y.length || !window.tcart || window.tcart.promocode && window.tcart.prodamount_discountsum || f.type.push("promocode"); break; case "deliveryreq": f.type.push("deliveryreq") } 0 < m && _.length && _.length < m && f.type.push("minlength"), 0 < p && _.length && _.length > p && f.type.push("maxlength") } f.type && f.type.length && (a[a.length] = f) } return "y" === g && (e = void 0 !== window.tcart_minorder && 0 < window.tcart_minorder, r = void 0 !== window.tcart_mincntorder && 0 < window.tcart_mincntorder, e && window.tcart.prodamount < window.tcart_minorder && ((f = { obj: {}, type: [] }).type.push("minorder"), a.push(f)), r && window.tcart.total < window.tcart_mincntorder && ((f = { obj: {}, type: [] }).type.push("minquantity"), a.push(f))), n && !a.length && (a = [{ obj: "none", type: ["emptyfill"] }]), a } function showErrors(t, e) { if (t instanceof Element || (t = t[0]), !e || !e.length) return !1; if ("y" === t.getAttribute("data-error-popup")) return showErrorInPopup(t, e); for (var r = (r = t.getAttribute("data-inputbox")) || ".blockinput", o = "", a = !1, n = "", i = "", s = "", l = 0; l < e.length; l++) if (e[l] && e[l].obj) { if (0 === l && "none" === e[l].obj) { return false; } var c = e[l].obj; c instanceof Element || (c = c[0]), c && (o = c.closest(r)), o && (i = o.querySelectorAll(".t-input-error"), t_addClass(o, "js-error-control-box"), 0 < i.length && (a = !0)); for (d = 0; d < e[l].type.length; d++) { var u = e[l].type[d] , s = ""; if (1, (n = t.querySelectorAll(".js-rule-error-" + u)).length) for (var m = 0; m < n.length; m++) n[m].getAttribute("data-rule-filled") || (n[m].textContent && n[m].innerText || !t_forms__getMsg(u) ? s = n[0].textContent || n[0].innerText : n[m].innerHTML = t_forms__getMsg(u)), n[m].style.display = "block"; else if (t_forms__getMsg(u) && (n = t.querySelectorAll(".js-rule-error-all")).length) for (m = 0; m < n.length; m++) n[m].innerHTML = t_forms__getMsg(u), n[m].style.display = "block"; a && (!s && t_forms__getMsg(u + "field") ? s = t_forms__getMsg(u + "field") : t_forms__getMsg(u) && (s = t_forms__getMsg(u)), s && o && (i = o.querySelectorAll(".t-input-error"), Array.prototype.forEach.call(i, function(t) { t.innerHTML = s }))) } } var p = t.querySelectorAll(".js-errorbox-all"); return Array.prototype.forEach.call(p, function(t) { t.style.display = "block" }), t_triggerEvent(t, "tildaform:aftererror"), !0 } function showErrorInPopup(t, e) { if (t instanceof Element || (t = t[0]), !e || !e.length) return !1; let arr = []; let arrUniq = []; var r, o = t.getAttribute("id"), a = (a = t.getAttribute("data-inputbox")) || ".blockinput", n = "", i = !1, s = "", l = "", d = "", c = document.getElementById("tilda-popup-for-error"); c || (document.body.insertAdjacentHTML("beforeend", ''), t_addEventListener(c = document.getElementById("tilda-popup-for-error"), "click", function(t) { if (((t = t || window.event).target || t.srcElement).closest(".js-errorbox-close")) return t.preventDefault ? t.preventDefault() : t.returnValue = !1, t_fadeOut(c), !1 })); for (var u, m, p = 0; p < e.length; p++) if (e[p] && e[p].obj) { if (0 === p && "none" === e[p].obj) { return false; } var f = e[p].obj; f instanceof Element || (f = f[0]), f && (n = f.closest(a)), n && (s = n.querySelectorAll(".t-input-error"), t_addClass(n, "js-error-control-box"), s.length && (i = !0)); for (var _ = 0; _ < e[p].type.length; _++) { var y = e[p].type[_] , w = t_forms__getMsg(y) , l = ""; (r = t.querySelector(".js-rule-error-" + y)) ? r.textContent && r.innerText || !w || -1 !== d.indexOf(w) ? (l = r.textContent || r.innerText, -1 === d.indexOf(w) && (d = d + '

' + l + "

")) : d = d + '

' + w + "

" : w && -1 === d.indexOf(w) && (d = d + '

' + w + "

"), i && (!l && t_forms__getMsg(y + "field") ? l = t_forms__getMsg(y + "field") : w && (l = w), l && n && (s = n.querySelectorAll(".t-input-error"), Array.prototype.forEach.call(s, function(t) { t.innerHTML = l, t_fadeIn(t) }))) } } function h(t) { "INPUT" === ((t = t || window.event).target || t.srcElement).tagName && (t = u.querySelectorAll("form .t-input-error"), t_fadeOut(c), Array.prototype.forEach.call(t, function(t) { t.innerHTML = "", t_fadeOut(t) }), window.t_forms__errorTimerID && (window.clearTimeout(window.t_forms__errorTimerID), window.t_forms__errorTimerID = 0), window.isInitEventsZB[o] = !0) } return d && (c.querySelector(".t-form__errorbox-text").innerHTML += d, m = c.querySelectorAll(".t-form__errorbox-item"), arr = Array.from(m), arrUniq = arr.reduce((o, i) => { if (!o.find(v => v.innerHTML == i.innerHTML)) { o.push(i); } return o; }, []), Array.prototype.forEach.call(arrUniq, function(t) { t.style.display = "block" }), t_fadeIn(c)), window.t_forms__errorTimerID && window.clearTimeout(window.t_forms__errorTimerID), window.t_forms__errorTimerID = window.setTimeout(function() { t_fadeOut(c), s = t.querySelectorAll(".t-input-error"), Array.prototype.forEach.call(s, function(t) { t.innerHTML = "", t_fadeOut(t) }), window.t_forms__errorTimerID = 0 }, 1e4), window.isInitEventsZB[o] || (u = t.closest(".r"), m = "focus", document.addEventListener || (m = "focusin"), t_removeEventListener(u, m, h), t_addEventListener(u, m, h, !0), t_removeEventListener(u, "change", h), t_addEventListener(u, "change", h, !0)), t_triggerEvent(t, "tildaform:aftererror"), !0 }; function t_forms__getMsg(t) { var e = [] , r = window.t_forms__lang; return e.EN = { success: "Thank you! Your data has been submitted.", successorder: "Thank you! Order created. Please wait while you are redirected to the payment page...", email: "Please enter a valid email address", url: "Please put a correct URL", phone: "Please put a correct phone number", number: "Please put a correct number", date: "Please put a correct date", time: "Please put a correct time (HH:mm)", name: "Please put a name", namerus: "Please put a correct name (only cyrillic letters)", nameeng: "Please put a correct name (only latin letters)", string: "You put incorrect symbols. Only letters, numbers and punctuation symbols are allowed", req: "Please fill out all required fields", reqfield: "Required field", minlength: "Value is too short", maxlength: "Value too big", emptyfill: "None of the fields are filled in", chosevalue: "Please select an address from the options", deliveryreq: "It is not possible to place an order without delivery. Please refresh the page and try again", promocode: "Please activate promo code or clear input field" }, e.RU = { success: "Спасибо! Данные успешно отправлены.", successorder: "Спасибо! Заказ оформлен. Пожалуйста, подождите. Идет переход к оплате...", email: "Укажите, пожалуйста, корректный email", url: "Укажите, пожалуйста, корректный URL", phone: "Укажите, пожалуйста, корректный номер телефона", number: "Укажите, пожалуйста, корректный номер", date: "Укажите, пожалуйста, корректную дату", time: "Укажите, пожалуйста, корректное время (ЧЧ:ММ)", name: "Укажите, пожалуйста, имя", namerus: "Укажите, пожалуйста, имя (только кириллица)", nameeng: "Укажите, пожалуйста, имя (только латиница)", string: "Вы написали некорректные символы. Разрешены только буквы, числа и знаки пунктуации", req: "Пожалуйста, заполните все обязательные поля", reqfield: "Обязательное поле", minlength: "Слишком короткое значение", maxlength: "Слишком длинное", emptyfill: "Ни одно поле не заполнено", chosevalue: "Пожалуйста, выберите адрес из предложенных вариантов", deliveryreq: "Невозможно оформить заказ без доставки. Пожалуйста, перезагрузите страницу и попробуйте еще раз.", promocode: "Активируйте, пожалуйста промокод или очистите поле" }, "function" == typeof t_forms__getDict && "RU" !== r && "EN" !== r && (e = t_forms__getDict()), (e[r] || e.EN)[t] } }()); function nolimShowSuccessPopup314236537(t) { if (document.querySelector("#nolimnolimtildaformsuccesspopuptext")) { document.querySelector("#nolimnolimtildaformsuccesspopuptext").closest(".t-form-success-popup").remove(); } var e = "" , r = document.getElementById("nolimnolimtildaformsuccesspopup803689411") , o = document.getElementById("nolimnolimtildaformsuccesspopuptext") , a = document.body; r || (e += '', e += '', a.insertAdjacentHTML("beforeend", ''), r = document.getElementById("nolimnolimtildaformsuccesspopup803689411"), o = document.getElementById("nolimnolimtildaformsuccesspopuptext"), e = r.querySelector(".t-form-success-popup__close-icon"), t_addEventListener(r, "click", function(t) { ((t = t || window.event).target || t.srcElement) === this && nolimCloseSuccessPopup314236537() }), t_addEventListener(e, "click", function() { nolimCloseSuccessPopup314236537() }), t_addEventListener(a, "keydown", function(t) { 27 == ((t = t || window.event).keyCode || t.which) && nolimCloseSuccessPopup314236537() })), o.innerHTML = t, t_fadeIn(r), t_addClass(a, "t-body_success-popup-showed"), /iPhone|iPad|iPod/i.test(navigator.userAgent) && !window.MSStream && setTimeout(function() { nolimLockBodyScroll314236537() }, 500) } function nolimCloseSuccessPopup314236537() { var t = document.getElementById("nolimnolimtildaformsuccesspopup803689411"); t && (t_removeClass(document.body, "t-body_success-popup-showed"), /iPhone|iPad|iPod/i.test(navigator.userAgent) && !window.MSStream && nolimUnlockBodyScroll314236537(), t_fadeOut(t)) } function nolimLockBodyScroll314236537() { var t, e = document.body; t_hasClass(e, "t-body_scroll-locked") || (t = void 0 !== window.pageYOffset ? window.pageYOffset : (document.documentElement || document.body.parentNode || document.body).scrollTop, t_addClass(e, "t-body_scroll-locked"), e.style.top = "-" + t + "px", e.setAttribute("data-popup-scrolltop", t)) } function nolimUnlockBodyScroll314236537() { var t, e = document.body; t_hasClass(e, "t-body_scroll-locked") && (t = e.getAttribute("data-popup-scrolltop"), t_removeClass(e, "t-body_scroll-locked"), e.style.top = null, e.removeAttribute("data-popup-scrolltop"), document.documentElement.scrollTop = parseInt(t)) }
Сообщение об успешной отправке!