Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.02.2014, 14:59
BSI BSI вне форума
Аспирант
Отправить личное сообщение для BSI Посмотреть профиль Найти все сообщения от BSI
 
Регистрация: 01.06.2013
Сообщений: 48

Функция на JavaScrept
Написана вот такая функция:

var first=true;
function VerchReg(newsymbol)
{
var re = /[0-9А-Яа-я-" "]/;//Вводятся только цифры,кириллица - и пробел
if (re.test(newsymbol))
{
if (newsymbol==" ")
{
first=true;
return newsymbol;
}
if (first)
{
first=false;
return newsymbol.toUpperCase();
} else
{
return newsymbol;
}
}
else
{
return "";
}
}

взаимодействует вот с этим кодом
<text>Всё сразу в верхний регистр</text>
</value>
</caption>
<event activity="change" name="event__change">
<script contentType="application/x-javascript">
if (xfa.event.newText.length &gt; xfa.event.prevText.length &amp;&amp; xfa.event.change.length == 1)
{
xfa.event.change = xfa.form.topmostSubform.variables.Validation.Verch Reg(xfa.event.change);
}
else
{
xfa.event.change = "";
}
</script>

разрабатывается все в среде LiveDesigner

задача кода - при вводе в поле символов в нижнем регистре в поле сразу на вводе первые символы каждого слова отображаются с заглавной буквы. Пример - вод осуществляется "иванов иван иванович" в поле сразу появляется "Иванов Иван Иванович".
Весь этот код в принципе работает, но есть нюанс. Проблема в том, что если повторно в поле производить редактирование, то есть убрать Иванов Иван Иванович и начать печатать вновь "петров петр петрович" появляется "петров Петр Петрович" это один вариант. Второй - если перезагрузить форму, то все опять работает нормально. И третий вариант - ввели "иван иванович иванов" сразу появляется "Иванов Иван Иванович", возвращаем курсор в начало поля, делаем пробел, опять курсор в начало поля и вводим в нижнем регистре "петров петр петрович" то отображается "Петров Петр Петрович" в итоге в поле "Иванов Иван Иванович Петров Петр Петрович".

В чем проблема? Кто поможет?
Ответить с цитированием
  #2 (permalink)  
Старый 27.02.2014, 16:00
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Сообщение от BSI
первые символы каждого слова отображаются с заглавной буквы
вашим LiveDesigner необучен но на js можно так
<!DOCTYPE HTML>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>

<body>
<form onsubmit="return false">
<input id="input"  size="50"/>
<button type="submit">Отправить</button>
<script>
(function(){
var input = document.getElementById('input');
input['oninput' in input ? 'oninput' : 'onpropertychange'] = function() {
var str = this.value,
reg =/[^-а-яё\d\s]/g,
regUp =/(^|\s)(\S)/g;
str = str.toLowerCase().replace(reg, '');
str = str.replace(regUp, function g(a, b, c)
{
   return b + c.toUpperCase()
});
this.value = str ;
};
})();
</script>
</form>
</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 27.02.2014, 16:16
BSI BSI вне форума
Аспирант
Отправить личное сообщение для BSI Посмотреть профиль Найти все сообщения от BSI
 
Регистрация: 01.06.2013
Сообщений: 48

Да, работает нормально, но отображение в поле при вводе в нижнем регистре "иванов иван иванович" и остается в нижнем и лишь после потери полем фокуса, появляется "Иванов Иван Иванович", а надо чтобы сразу при вводе преобразовывалось в "Иванов Иван Иванович"
Ответить с цитированием
  #4 (permalink)  
Старый 27.02.2014, 16:49
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Сообщение от BSI
отображение в поле при вводе в нижнем регистре "иванов иван иванович" и остается в нижнем и лишь после потери полем фокуса
и в каком это браузере?
Ответить с цитированием
  #5 (permalink)  
Старый 27.02.2014, 17:27
BSI BSI вне форума
Аспирант
Отправить личное сообщение для BSI Посмотреть профиль Найти все сообщения от BSI
 
Регистрация: 01.06.2013
Сообщений: 48

Вы знаете, я не спец в скриптах. Форма у меня для Adobe Acrobat 10 версии. В дополнении к Adobe Acrobat идет LiveDesigner (для разработки форм), в этом LiveDesigner я сделал форму. Я знаю, что в Acrobat сделать, то что я хочу (изменения на вводе) нельзя, а в LiveDesigner можно. LiveDesigner в xml коде. Делаю я вот так:
<text>Всё сразу в верхний регистр</text>
               </value>
            </caption>
            <event activity="change" name="event__change">
               <script contentType="application/x-javascript">
if (xfa.event.newText.length &gt; xfa.event.prevText.length &amp;&amp; xfa.event.change.length == 1)
{
xfa.event.change = xfa.form.topmostSubform.variables.Validation.VseVerch(xfa.event.change);
}
else
{
xfa.event.change = "";
}
		
</script>


 </desc>
      <?templateDesigner Hyphenation excludeInitialCap:1, excludeAllCaps:1, wordCharCnt:7, remainCharCnt:3, pushCharCnt:3?>
      <variables>
         <script contentType="application/x-javascript" name="Validation">

function VseVerch()
{
var input = document.getElementById('input');

input['oninput' in input ? 'oninput' : 'onpropertychange'] = function() {
var str = this.value,
reg =/[^-а-яё\d\s]/g,
regUp =/(^|\s)(\S)/g;
str = str.toLowerCase().replace(reg, '');
str = str.replace(regUp, function g(a, b, c)
{
   return b + c.toUpperCase()
});
this.value = str ;
};
}();
</script>
         <?templateDesigner expand 1?></variables>
      <?templateDesigner expand 1?></subform>
   <?templateDesigner DefaultPreviewDynamic 1?>
   <?templateDesigner DefaultRunAt client?>
   <?templateDesigner Grid show:1, snap:1, units:1, color:ff8080, origin:(0,0), interval:(125000,125000)?>
   <?templateDesigner DefaultLanguage JavaScript?>


но что-то как надо не работает.
Ответить с цитированием
  #6 (permalink)  
Старый 27.02.2014, 17:32
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

BSI,
про Acrobat неподскажу - можно только ['oninput' in input ? 'oninput' : 'onpropertychange'] на .onkeyup попробовать поменять или добавить
Ответить с цитированием
  #7 (permalink)  
Старый 27.02.2014, 18:06
BSI BSI вне форума
Аспирант
Отправить личное сообщение для BSI Посмотреть профиль Найти все сообщения от BSI
 
Регистрация: 01.06.2013
Сообщений: 48

Большое спасибо за помощь, но работать не хочет.
Вот с этой функцией работает, но при первом открытии формы, при редактировании поля выводит иванов Иван Иванович.
var first=true;
function VerchReg(newsymbol)
{
var re = /[0-9А-Яа-я-" "]/;//Вводятся только цифры,кириллица - и пробел
if (re.test(newsymbol))
{
if (newsymbol==" ")
{
  first=true;
  return newsymbol;
}
if (first)
{
first=false;
return newsymbol.toUpperCase();
} else
{
return newsymbol;
}
}
else
{
return "";
}
}

Последний раз редактировалось BSI, 27.02.2014 в 18:13. Причина: не вставил скрпт
Ответить с цитированием
  #8 (permalink)  
Старый 28.02.2014, 11:58
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

иванов иван иванович и так знает что он Иванов Иван Иванович. Ему доказывать не надо. Надо просто записать в док Иванов Иван Иванович, если Иванову Ивану Ивановичу было лень нажимать шифт.
Ответить с цитированием
  #9 (permalink)  
Старый 28.02.2014, 13:08
BSI BSI вне форума
Аспирант
Отправить личное сообщение для BSI Посмотреть профиль Найти все сообщения от BSI
 
Регистрация: 01.06.2013
Сообщений: 48

Некоторые любители печатают так ИВАНОВ ИВАН ИВАНОВИЧ, в документе надо так Иванов Иван Иванович и не как иначе (такое условие). Вот Ваш скрипт и решает эту проблему. Только пока не могу его правильно применить в своей форме. Еще раз спасибо за принятое участие в моей проблеме.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать где находится функция, на которую указывает javascript:openTag('mgmt') amigo* Общие вопросы Javascript 13 11.04.2012 12:11
функция и несуществующий id Ankh Элементы интерфейса 4 10.02.2012 23:49
функция не успевает Sadist_dead Элементы интерфейса 22 02.10.2011 19:00
Где вызывается функция? cradis Общие вопросы Javascript 5 23.04.2011 13:47
Функция меняющая значение input type text. Value не подходит( Sundog Общие вопросы Javascript 1 25.09.2009 15:06