Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Пользовательские события. (https://javascript.ru/forum/events/39552-polzovatelskie-sobytiya.html)

eskimoblueday 03.07.2013 21:01

Пользовательские события.
 
Добрый день!
Не могу решить одну проблему:когда пользователь введет в текстовое поле,скажем,- "http",я хочу создать и обработать это событие-например изменить шрифт вводимого текста.
Как можно такое организовать?
Спасибо за внимание.

рони 03.07.2013 21:15

eskimoblueday,
onkeyup -> RegExp -> CSS

eskimoblueday 03.07.2013 21:25

Я сейчас организовал с помощью setInterval,в качестве 1 параметра поставил проверку - if($(".something").val()=="http")...
Но наверное это не сильно правильно?И после несколько таких if-ов идет сильное нагромождение кода.
Рони,можешь привести пример с регуляркой?

рони 03.07.2013 22:17

eskimoblueday,
:cray:
<!DOCTYPE HTML>
<html>
<head>
  <title>Untitled</title>
</head>
<body>
<input type="text" class="test">
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script type="text/javascript">
$(".test").keyup(function( ){
   var val =  $(this).val()
   $(this).css({color:/http/.test(val)?'red':''})
});
</script>
</body>
</html>

cyber 04.07.2013 09:44

elelm.onkeypress = function () {
setTimeout(function(){

//тут писать код проверки

},0);

}

danik.js 04.07.2013 10:19

Я уж хз зачем топик стартеру пользовательские события, ну раз уж сильно хочет, то вот, пожалуйста, пользовательские события (не работает в IE8-9):
<!DOCTYPE html>
<input type="text" id="input" />
<script>
(function(){
    var input = document.getElementById('input');
    var pattern = /http/;
    var lastMatch = false;
    input.addEventListener('input', function() {
        var match = pattern.test(this.value);
        if (match !== lastMatch) {
            var event = new CustomEvent(
                "patternmatch",
                {
                	detail: match,
            		bubbles: false,
            		cancelable: false
            	}
            );
            this.dispatchEvent(event);
        }
        lastMatch = match;
    });
})()
</script>
<script>
(function(){
    var input = document.getElementById('input');
    input.addEventListener('patternmatch', function(e){
        var matches = e.detail;
        alert('patternmatch event! Matches? ' + matches);
        this.style.color = matches ? 'red' : 'black';
    });
})()
</script>


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