Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Ассоциативные массивы, не работает (https://javascript.ru/forum/css-html/57048-associativnye-massivy-ne-rabotaet.html)

ru_rikki 17.07.2015 09:35

У вас рендер на сервере или в браузере?
в данном случае на сервере
часть атрибутов не во всех браузерах работает к сожалению, поэтому пусть будет колхозный но верный рендер, с area лично не связываюсь, беру только железно протестированный во всех браузерах bootstrap, мне бы это зло домучить и с js можно завязать, на все остальное хватает арсенала bootstrapa
kostyanet, здесь не только ошибки, здесь еще счетчик количества символов и очистка в случае ввода запрещенных символов с возможностью подключения и отключения в зависимости от поля

чтобы понятней http://citr.tk в поле "название" что-нибудь наберите, двойной клик очистить поле

kostyanet 17.07.2015 09:37

Ладно, тогда вместо

if (reg.test(element.value)) {

надо

if (valSet.reg.test(element.value)) {

kostyanet 17.07.2015 09:40

Цитата:

Сообщение от ru_rikki
часть атрибутов не во всех браузерах работает к сожалению

Такие атрибуты как errmsg вообще нигде не работают, и что с того? Для того есть метод element.getAttribute('errmsg'); как и было в примере выше.

Не важно, все равно эта ваша функция - дикая лапша. Между тем вы сами, выше, заявили о желании что-то там цивилизовать.

Видите как быстро баттхерт может заставить захотеть одичать.

kostyanet 17.07.2015 09:50

Цитата:

Сообщение от ru_rikki
с area лично не связываюсь

Что за area?

ru_rikki 17.07.2015 10:04

kostyanet, спасибо заработало, сейчас посмотрю ваш вариант, но плохо что сразу нельзя все в одной связке сделать и валидация и счетчик и очистка
сорри ARIA http://www.w3.org/TR/aria-in-html/ да и вообще вся эта расширенная семантика. Я не прогер мне надо просто сделать свою базу, А все эти навороты больше для какх-то онлайн игрушек подходят ИМХО конечно

рони 17.07.2015 10:22

Цитата:

Сообщение от ru_rikki
if (valSet.reg.test(element.value))

:-?

ru_rikki 17.07.2015 10:26

рони, да уже исправила)
Ах да забыла: какие риски использования ассоциативных массивов?

kostyanet 17.07.2015 10:37

Цитата:

Сообщение от ru_rikki
но плохо что сразу нельзя все в одной связке сделать и валидация и счетчик и очистка


Это потому что вы не прогер вам плохо, а прогерам очень плохо от таких вот кодов, как у вас, непрогреров.

Я показал лишь часть файла, этот объект сам только проверется, а рендером занимается контроллер, в который кидаются throw.


Никаких рисков нет, одни только бонусы. А вот какие бонусы дают фичи для инвалидов? Они что, начали активно тратить свои пенсии в интернете или статьи читать?

ru_rikki 17.07.2015 10:45

"Это потому что вы не прогер вам плохо, а прогерам очень плохо от таких вот кодов, как у вас, непрогреров" :lol: ну что поделаешь... лень матушка... итак свой индусский код месяц переделывала, чтобы можно было задавать вопросы на php.ru) и тебе при этом не только отвечали но и понимали) лень и неохота, сделаю базу ... потом может как тех задание скину в какой-нибудь продвинутый центр разработки за деньги и сделаю шедевр, а так пракически невозможно описать что тебе конкретно нужно, итог один сайт глазами прогера, а не потребителя

kostyanet 17.07.2015 10:49

В "контроллере" примерно такая система

var fields={}, /* здесь все те самые поля-объекты */

validate=function(e) { /* это самое и вешается на всякие там события у полей */

	var f=fields[this.name];
	
	if(f.error) { /* если уже был косяк то стереть */
		f.el.title=f.title;
		f.el.classList.remove('invalid');
		f.error=null;
	}
	
	try {
		f.validate();
	}
	catch(err) {
		
		submit.disabled=f.error=true;
		
		if(e.type!='input') { /* рендерит ошибку если сработало по событию, по вызову из скрипта - нет */
			f.title=f.el.title;
			f.el.title=err;
			f.el.classList.add('invalid');
		}
	}
},


То есть весь рендер заключается в обвести поле красной рамкой и поменять его title чтоб чел мог подвести мышь и почитать что надо сделать.

Я проверял несколько дизайнов сообщений об ошибках и пришел к выводу что такой - самый лучший. Он кстати с нативным полностью совпадает как вы уже поняли.


Часовой пояс GMT +3, время: 17:32.