2012-05-10 2 views
0

Я занимаюсь очень рудиментарной работой javascript и, кажется, попал в удар. В моей жизни я не могу найти то, что должно быть очень простым ответом на Google.Выполнение JavaScript на ключевом прессе

<html> 
    <head> 
     <title>Test Page</title> 
     <script type="text/javascript"> 
    function lowerCase(){ 
     var input = document.send.inputText; 
     input.toLowerCase(); 
     document.write(input); 
     alert(input); 
    } 
    </script> 
    </head> 
    <body> 
     <h1>Test Page</h1> 
     <form name="send"> 
      <input type='text' name="inputText" onkeypress="lowerCase()"/> 
     </form> 
    </body> 
</html> 

Мое намерение заключается в том, что функция lowerCase выполняется при вводе информации в текстовое поле и нажатии ввода. Тем не менее, я никогда не могу заставить функцию выполнить.

+0

@iambriansreed - вы имеете в виду ['jsfiddle'] (http://jsfiddle.net/). –

ответ

3

Как насчет ...

HTML:

<input type='text' name="inputText" onkeypress="lowerCase(this)"> 

JavaScript:

function lowerCase (input) { 
    setTimeout(function() { 
     input.value = input.value.toLowerCase();  
    }, 0);  
} 

Живая демонстрация:http://jsfiddle.net/vXpj8/3/


function lowerCase (e) { 
    if (e.keyCode === 13) { 
     this.value = this.value.toLowerCase(); 
     e.preventDefault(); 
    }   
} 

document.send.inputText.onkeypress = lowerCase; 

Живая демонстрация:http://jsfiddle.net/vXpj8/1/

Обратите внимание, как я связать обработчик событий с помощью JavaScript. Я делаю это, потому что хочу иметь объект event, доступный в функции.

+0

Для реального времени это работает абсолютно отлично. Все, что я ищу, - это ящик, в который я могу ввести что-то, нажать enter, а затем показать его в нижнем регистре. – Astephen2

+0

@ Astephen2 Я обновил свой ответ. –

+0

@ ŠimeVidas Должен ли вы очистить таймаут, когда 'keyup'? Так как он будет потреблять количество памяти. –

0

Между атрибутом onkeypress и значком равенства есть пробел. Удалите это; он должен работать.

+0

Спасибо за совет! Я попробовал, и он, похоже, не работает. – Astephen2

-1

несколько вопросов с кодом первого входом вара этого поле ввода не строка, toLowerCase() является методом строки, вам нужно входное значение

var input = document.send.inputText; 
alert(input.value); 

второго, OnKeyPress является excuted до того ввода текста , возможно, вам следует рассмотреть возможность изменить OnKeyPress к OnKeyUp

попробовать, если это помогает

<html> 
<head> 
    <title>Test Page</title> 
    <script type="text/javascript"> 
     function lowerCase(){ 
      var input = document.send.inputText; 
      input.value = input.value.toLowerCase(); 
     } 
    </script> 
</head> 

<body> 

    <h1>Test Page</h1> 
    <form name="send"> 
     <input type='text' name="inputText" onkeyup="lowerCase()"> 
    </form> 

</body> 
</html> 
0

скрипку: http://jsfiddle.net/iambriansreed/jEnxH/

<form name="send"> 
    <input type='text' name="inputText"> 
</form> 
<script> 
    document.send.inputText.onkeypress = function(event){ 
     if(event.keyCode != 13) return;  
     this.value = this.value.toLowerCase(); 
     alert(this.value.toLowerCase()); 
     event.preventDefault(); 
    }; 
</script> 
+0

OK. @ Astephen2 Это как минимум минимальный код. – iambriansreed

0

Если вы хотите работать при нажатии на клавишу ввода, то вам придется иметь дело с формой их представления, так как нажатие ввести в элемент ввода текста, который представляет собой элемент формы представляет форму.

Скорее всего, вы хотите изменить значение на нижний регистр на каком-либо другом событии, например keup, например.

<input onkeyup="this.value = this.value.toLowerCase();" ... > 

Выполнение такого рода вещи немного раздражает пользователей, хотя, так как заглавные буквы магически изменены на прописные. Если для строчных букв существует внутреннее требование, лучше иметь дело с ним, чем путать пользователей, вводящих текст.

Смежные вопросы