Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Ввод времени по маске (https://javascript.ru/forum/jquery/12026-vvod-vremeni-po-maske.html)

skalka 27.09.2010 12:56

Ввод времени по маске
 
Здравствуйте! Проблема такая:

Есть поле для ввода времени, на него при помощи плагина jquery.maskedinput-1.2.2 установила маску 00:00. Маска работает! Проблема в том что если вводишь 89:69 то ошибки естесно нет, а надо бы!!!

Код такой :

jQuery(function($) {
$('#eITDbegintime').mask('99:99');
$('#eITDendtime').mask('99:99');

});


как сделать так чтобы если число не подходит оно не вводилось, в общем как правильно маску то задать? :-)

exec 27.09.2010 13:26

Можно пофиксить так, не залезая в код плагина:

(function () {
	var mask = $.fn.mask;
	$.fn.mask = function ( a ) {
		var t = a.split( ":" );
		if ( +t[0] > 24 || +t[1] > 60 ) {
			throw "Некорректное время";
		} else {
			return mask( a );
		}
	};
})();

skalka 27.09.2010 13:39

ну в принципе просто, только не пойму как потом маску к полю привязать то???

exec 27.09.2010 13:51

Так же.

Цитата:

$('#eITDbegintime').mask('99:99');
$('#eITDendtime').mask('99:99');

skalka 27.09.2010 14:12

так не работает( маска отображается по прежнему и по прежнему можно вводить 99:99. На форме много полей которые нужно заполнять, и можно сделать проверку при сохранении к примеру, но хотелось бы чтобы сразу

рони 27.09.2010 14:16

exec,
хотелось бы взглянуть на рабочий пример ?
skalka,
пока могу предложить только слегка сузить диапазон
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>
  <title></title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript" src="http://jquery-joshbush.googlecode.com/files/jquery.maskedinput-1.2.2.min.js" ></script>
<script language="JavaScript" type="text/javascript">
jQuery(function($) {
$.mask.definitions['H']='[012]';
$.mask.definitions['M']='[012345]';
$('#eITDbegintime').mask('H9:M9');
$('#eITDendtime').mask('H9:M9');
});
</script>
</head>
<body>
<input id="eITDbegintime" type="text"  />
<input id="eITDendtime" type="text"  />
</body>
</html>

skalka 27.09.2010 14:33

ВО!!!! То что надо, спасибо)))

walic20 14.07.2011 01:38

огромное спасибо

piraids 06.06.2014 16:16

рони,
Ваш пример хорош, но в нем можно ввести 29:59 и 24:59, как можно ограничить?)

alex33 09.06.2014 15:36

Цитата:

хотелось бы взглянуть на рабочий пример ?
Вот пример есть здесь, на этой странице
http://www.moskva.fm/what/


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