
03.10.2010, 15:33
|
|
Кандидат Javascript-наук
|
|
Регистрация: 22.06.2009
Сообщений: 117
|
|
|
Подсчитать число запятых.
Здраствуйте.
Есть код:
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;
}
Считает число знаков и выводит число оставшихся от лимита, + блокирует ввод сверх лимита.
Как сделать так, чтобы подсчитывался и блокировался ввод только определенных символов, например запятых?
|
|

03.10.2010, 15:36
|
|
Профессор
|
|
Регистрация: 21.01.2010
Сообщений: 1,022
|
|
form.s.value = form.s.value.replace(/,/g,'')
|
|

03.10.2010, 16:12
|
|
Кандидат Javascript-наук
|
|
Регистрация: 22.06.2009
Сообщений: 117
|
|
пробую и так:
<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>
не дает ввести не одной запятой, а все остальные символы считает 
|
|

03.10.2010, 18:34
|
 |
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,618
|
|
Ну если развивать сию извращённую тему)):
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?',':''}));
А вообще, делаться это должно как-то по-другому)
|
|

03.10.2010, 18:49
|
|
Кандидат Javascript-наук
|
|
Регистрация: 22.06.2009
Сообщений: 117
|
|
не, не фурычет, че я не так делаю?
<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>
|
|

03.10.2010, 18:51
|
|
Кандидат Javascript-наук
|
|
Регистрация: 22.06.2009
Сообщений: 117
|
|
Сообщение от Aetae
|
|
А вообще, делаться это должно как-то по-другому)
|
Подскажите, как? Искал рабочий пример - не нашел.
|
|

03.10.2010, 21:03
|
 |
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,618
|
|
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>
А чтобы понять почему решение плохое - попробуйте поставить запятые не в конце печатаемого текста, а в середине иль начале.)
|
|
|
|