Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите упорядочить текст, вводимый поьзывателем на сайт. Чтоб при выоде небыло РаЗныХ букв, а только с Заглавной
 
 автор: Dinya_1   (10.09.2008 в 06:24)   письмо автору
 
 

Предложение только с Заглавной (не кажд.буква в слове).

  Ответить  
 
 автор: sim5   (10.09.2008 в 06:55)   письмо автору
 
   для: Dinya_1   (10.09.2008 в 06:24)
 

С помощью JS вы никак не сможете дисциплинировать пользователя. Обработайте текст на сервере как вам нужно будет, есть для этого функции в РНР.

  Ответить  
 
 автор: zzDimazz   (10.09.2008 в 08:53)   письмо автору
 
   для: sim5   (10.09.2008 в 06:55)
 

Я думаю это возможно ,
для этого нужно :
1) 2 массива верхнего и нижнего регистра + массив символов(знаков)
2) привязываться к методу 'onchange' ,
3) функция проверки , последняя введенная буква должна быть нижнего регистра, если предыдущая буква "не пробел"(или знак препинания ) и "нижнего регистра" если же пробел (или знк препинания) предыдущий то она должна быть верхнего регистра.

PS Исполнить могу вечером так как сейчас убегаю в универ:)

  Ответить  
 
 автор: sim5   (10.09.2008 в 09:02)   письмо автору
 
   для: zzDimazz   (10.09.2008 в 08:53)
 

Кто же спорит, что нельзя. Вот только на сервере это делать выгоднее.

  Ответить  
 
 автор: zzDimazz   (10.09.2008 в 09:34)   письмо автору
 
   для: sim5   (10.09.2008 в 09:02)
 

вы правы, но не опытный пользователь не сможет обойти этот запрет с буквами , но стоит в УРЛ строке написать javascript:document.getElementById("FORM_").submit();
и все станет как было)

  Ответить  
 
 автор: zzDimazz   (10.09.2008 в 09:37)   письмо автору
 
   для: zzDimazz   (10.09.2008 в 09:34)
 

хотя это меньше будет нагружать сервер

  Ответить  
 
 автор: sim5   (10.09.2008 в 09:41)   письмо автору
 
   для: zzDimazz   (10.09.2008 в 09:34)
 

Стоит просто отключить JS, и шли что хочешь, а автор, как следует из "негодования" его вопроса не о "честных" пользователях речь ведет.

  Ответить  
 
 автор: PAT   (10.09.2008 в 13:17)   письмо автору
 
   для: Dinya_1   (10.09.2008 в 06:24)
 

Приблизительно так:
<?
<html>
<
head>
<
meta http-equiv="content-type" content="text/html; charset=win-1251">
<
script>
function 
sfs (x//функция определения индекса первого непробельного символа
{
for (var 
0x.lengthj++)
if (
x.charAt (j) != ' ' && x.charAt (j) != '\t') break;
return 
j;
}

function 
myFUNC () //функция обработки содержимого поля ввода
{
var 
obj document.forms.myFRM.myTXT;

//удаляем все возвраты каретки
var txt obj.value.replace (/\r/g'');

//определяем самый первый непробельный символ содержимого
var sfs (txt);
//первый непробельный символ содержимого переводим в верхний регистр
var txt txt.substring (0z) + txt.charAt (z).toUpperCase () + txt.substr (1);

//создаём перечень признаков конца предложений
var sen = new Array ();
sen [0] = '. ' sen [1] = '! ' sen [2] = '? ' ;
sen [3] = '.\n'sen [4] = '!\n'sen [5] = '?\n';
//перечень, разумеется, можно дополнить

for (var s0sen.lengthj++)
   {
   
//делим содержимое по j-му признаку конца предложений
   
txt.split (sen [j]);

   if (
s.length 0)
   
//перебираем все "предложения"
   
for (var z1s.lengthk++)
      {
      
//определяем первый непробельный символ "предложения"
      
sfs ([k]);
      
//первый непробельный символ "предложения" переводим в верхний регистр
      
[k] = [k].substring (0z) + [k].charAt (z).toUpperCase () + [k].substr (1);
      }
   
//возвращаем содержимое, "сливая" "предложения" по j-му признаку конца предложений
   
txt s.join (sen [j]);
   }
//возвращаем полю ввода измененное содержимое
obj.value txt;
}
</script>
</head>
<body>
<form name="myFRM">
<textarea cols="80" rows="20" name="myTXT" onblur="myFUNC ()"></textarea>
...
</form>
</body>
</html>

  Ответить  
 
 автор: xx77   (10.09.2008 в 14:12)   письмо автору
 
   для: PAT   (10.09.2008 в 13:17)
 

не смог запустить эту функцию
наверное полкчается что-то типа такого
<html> 
<head> 
<meta http-equiv="content-type" content="text/html; charset=win-1251"> 
<script>
// <?

function myFUNC (x//функция обработки содержимого поля ввода 

var 
txt x.value.replace(
/([
A-Za-zЁёА-я])([A-Za-zЁёА-я]+)/g,
 function (
strp1p2) {
        return 
p1.toUpperCase() + p2.toLowerCase();
     });
     
alert(txt);
x.value txt

/*  ?> */
</script> 
</head> 
<body> 
<form name="myFRM"> 
<textarea cols="80" rows="10" name="myTXT"
 onchange="myFUNC(this); return true;"></textarea> 
... 
</form> 
</body> 
</html> 

  Ответить  
 
 автор: PAT   (10.09.2008 в 14:38)   письмо автору
 
   для: xx77   (10.09.2008 в 14:12)
 

функция запускается по событию ONBLUR - при уходе фокуса с <TEXTAREA>. Т.е. надо мышей ткнуть в любом месте экрана монитора вне <TEXTAREA>, или нажать клавиши TAB или Windows.

ONBLUR здесь надежнее, чем ONCHANGE, потому как если вы покинете <TEXTAREA>, ткнув в адресную строку браузера, то ONCHANGE не сработает и вы вполне сможете воспользоваться предложением, озвученным выше участником zzDimazz (10.09.2008 в 09:34). А вот при задействовании ONBLUR такой фокус не пройдёт.

Предложенный вами скрипт работает не так, как это нужно топикстартеру. Он хотел, чтобы заглавными были первые символы всех ПРЕДЛОЖЕНИЙ, а у вас с заглавной начинаются все СЛОВА.
Разница между понятиями "СЛОВО" и "ПРЕДЛОЖЕНИЕ" для вас разве не очевидна? :-)

И напоследок вопрос - для какой надобности вызов функции у вас снабжен инструкцией return true? Что, по-вашему, получится, если вернуть false? И что будет, если прописать return ('а на хрена этот return здесь нужен?')?

  Ответить  
 
 автор: xx77   (10.09.2008 в 17:24)   письмо автору
 
   для: PAT   (10.09.2008 в 14:38)
 

return() у меня постоянно почему.то закрадывается чисто случайно, или просто на всякий случай ))


> Разница между понятиями "СЛОВО" и "ПРЕДЛОЖЕНИЕ"

если чесно, иногда разницы совсем нет ))
а иногда разница есть , но границы слов и предложений многозначительно предоставлены
для расстановки самим читающим , и всей своей многозначительностью несут пищу для размышлений.
если считать что конец предложения это точка , с пробелами после неё
, то многим даже и не понять , то что иногда могут написать ))
<html> 
<head> 
<meta http-equiv="content-type" content="text/html; charset=win-1251"> 
<script>
// <%

function myFUNC (x) //функция обработки содержимого поля ввода 

var txt = x.value.replace(
/((^|[!\.\?]\s+)[A-Za-zЁёА-я])([^!\.\?]+)/g,
 function (str, p1, p2, p3) {
        return p1.toUpperCase() + p3.toLowerCase();
     });
     alert(txt);
x.value = txt; 

<!--  %>
</script> 
</head> 
<body> 
<form name="myFRM"> 
<textarea cols="80" rows="10" name="myTXT"
 onchange="myFUNC(this); return true;">
Вот напримеРр 
многие пишут так.Границы предлОжений.Экономят на байтах и килОбайтах.)
я пишу какие.то такие слова как.бы лень искать где.же дЕфис, или после кАкого нАжатия на кнопку телЕфона.
 И много разных разных полезностей может испортиться
 ; нельзя будет написАть , а можно только будет  написать )
 </textarea> 
... 
</form> 
</body> 
</html>

Это наверное Борман ....... подумал Штирлиц

  Ответить  
 
 автор: PAT   (10.09.2008 в 18:45)   письмо автору
 
   для: xx77   (10.09.2008 в 17:24)
 

"На всякую хитрую ж...у найдется свой винт с левой резьбой" (с)

Использованные мною варианты "признаков конца предложения" учитывают, конечно, только относительно ГРАМОТНОГО пользователя: знак препинания + пробел или перенос строки.
Разумеется, можно подвергнуть содержимое <TEXTAREA> стилистическому анализу и, разумеется, при этом всё равно возникнут нерешаемые проблемы (типа проставить запятую в предложении "казнить нельзя помиловать").

Несмотря на это, всё же полагаю, что мой ответ МНОГО БЛИЖЕ, чем ваш, к решению той задачи, коя поставлена автором вопроса.
Ибо ваш ответ - тоже абсолютно правильный - заключается в том, что "фигня это всё и ничего такого делать не стОит" :-)

PS. А насчёт очевидного преимущества ONBLUR перед ONCHANGE, вы, похоже, так и не поняли :-)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования