Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Подсчитать число запятых. (https://javascript.ru/forum/misc/12148-podschitat-chislo-zapyatykh.html)

LRCenter 03.10.2010 15:33

Подсчитать число запятых.
 
Здраствуйте.
Есть код:

maxLen = 25;
function checkMaxInput(form) {
if (form.s.value.length > maxLen)
form.s.value = form.s.value.substring(0, maxLen);
else document.getElementById('remLen').innerHTML =  maxLen - form.s.value.length;
}


Считает число знаков и выводит число оставшихся от лимита, + блокирует ввод сверх лимита.

Как сделать так, чтобы подсчитывался и блокировался ввод только определенных символов, например запятых?

exec 03.10.2010 15:36

form.s.value = form.s.value.replace(/,/g,'')

LRCenter 03.10.2010 16:12

пробую и так:

<script>
maxLen = 10;
function checkMaxInput(form) {
if (form.s.value.length > maxLen)
form.s.value = form.s.value.substring(0, maxLen);
form.s.value = form.s.value.replace(/,/g,'');
else document.getElementById('remLen').innerHTML =  maxLen - form.s.value.length;
}
</script>

<form>
<input id='s' type=text onkeydown='checkMaxInput(this.form);' onkeyup='checkMaxInput(this.form);'>, осталось <span id='remLen'>10
</span> запятых.</form>


и так:

<script>
maxLen = 10;
function checkMaxInput(form) {
if (form.s.value.length > maxLen)
form.s.value = form.s.value.replace(/,/g,'');
else document.getElementById('remLen').innerHTML =  maxLen - form.s.value.length;
}
</script>

<form>
<input id='s' type=text onkeydown='checkMaxInput(this.form);' onkeyup='checkMaxInput(this.form);'>, осталось <span id='remLen'>10</span> запятых.
</form>


...не наботает. Наверное чего-то не понимаю. Куда эту строку предкнуть? Я так понимаю она заменяет все кроме запятых на ""?


если делаю так:

<script>
maxLen = 10;
function checkMaxInput(form) {
form.s.value = form.s.value.replace(/,/g,'');
if (form.s.value.length > maxLen)
form.s.value = form.s.value.substring(0, maxLen);
else document.getElementById('remLen').innerHTML =  maxLen - form.s.value.length;
}
</script>

<form>
<input id='s' type=text onkeydown='checkMaxInput(this.form);' onkeyup='checkMaxInput(this.form);'>, осталось <span id='remLen'>10</span> 

запятых.
</form>



не дает ввести не одной запятой, а все остальные символы считает:(

Aetae 03.10.2010 18:34

Ну если развивать сию извращённую тему)):
var c=3; //колличество разрешённых запятых
form.s.value = form.s.value.replace(/,/g,function(){return c-->0?',':''}
var c=3;
alert('a,a,a,a,a,a,aa,aaa,a'.replace(/,/g,function(){return c-->0?',':''}));

А вообще, делаться это должно как-то по-другому)

LRCenter 03.10.2010 18:49

не, не фурычет, че я не так делаю?

<script>
var c=3;
maxLen = 10;
function checkMaxInput(form) {
form.s.value = form.s.value.replace(/,/g,function(){return c-->0?',':''}
if (form.s.value.length > maxLen)
form.s.value = form.s.value.substring(0, maxLen);
else document.getElementById('remLen').innerHTML =  maxLen - form.s.value.length;
}
</script>

<form>
<input id='s' type=text onkeydown='checkMaxInput(this.form);' onkeyup='checkMaxInput(this.form);'>, осталось <span id='remLen'>10</span> 

запятых.
</form>

LRCenter 03.10.2010 18:51

Цитата:

Сообщение от Aetae (Сообщение 72898)
А вообще, делаться это должно как-то по-другому)

Подскажите, как? Искал рабочий пример - не нашел.

Aetae 03.10.2010 21:03

1.Use FireBug(Скобочку забыли).
<script>
var c=3;
maxLen = 10;
function checkMaxInput(form) {
form.s.value = form.s.value.replace(/,/g,function(){return c-->0?',':''})
if (form.s.value.length > maxLen) form.s.value = form.s.value.substring(0, maxLen);
else document.getElementById('remLen').innerHTML =  maxLen - form.s.value.length;
}
</script>

<form>
<input id='s' type=text onkeydown='checkMaxInput(this.form);' onkeyup='checkMaxInput(this.form);'>, осталось <span id='remLen'>10</span> запятых.

2. Счётчик не там.
<script>
maxLen = 10;
function checkMaxInput(form) {
var c=3;
form.s.value = form.s.value.replace(/,/g,function(){return c-->0?',':''})
if (form.s.value.length > maxLen) form.s.value = form.s.value.substring(0, maxLen);
else document.getElementById('remLen').innerHTML =  maxLen - form.s.value.length;
}
</script>

<form>
<input id='s' type=text onkeydown='checkMaxInput(this.form);' onkeyup='checkMaxInput(this.form);'>, осталось <span id='remLen'>10</span> запятых.

3. Ваш код в принцпе и не нужен).
<script>
function checkMaxInput(form) {
var c=3;
form.s.value = form.s.value.replace(/,/g,function(){return c-->0?',':''})
document.getElementById('remLen').innerHTML =  c;
}
</script>

<form>
<input id='s' type=text onkeydown='checkMaxInput(this.form);' onkeyup='checkMaxInput(this.form);'>, осталось <span id='remLen'>3</span> 

запятых.
</form>


А чтобы понять почему решение плохое - попробуйте поставить запятые не в конце печатаемого текста, а в середине иль начале.)


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