Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.04.2014, 12:09
Новичок на форуме
Отправить личное сообщение для Tedrik Посмотреть профиль Найти все сообщения от Tedrik
 
Регистрация: 05.04.2014
Сообщений: 3

Нужна помощь с input
Не могу сообразить, как сделать, чтобы в каждом form работало изменение текста в реальном времени, а не после потери фокуса.
<form name="9mmammo">
<input type="text" id="count" value="1" onchange="calc1()"><div>Сумма: <span id="result1">5</span> руб.</div>
</form>

<form name="556ammo">
<input type="text" id="count" value="1" onchange="calc2()"><div>Сумма: <span id="result2">10</span> руб.</div>
</form>

<script type="text/javascript">
var input = document.body.children[0];

input.oninput = 
	function calc1()
	{
	var amount = document.forms["9mmammo"].count.value;
	document.getElementById('result1').innerHTML = amount * 5;
	}
	;
	function calc2()
	{
	var amount = document.forms["556ammo"].count.value;
	document.getElementById('result2').innerHTML = amount * 10;
	}
	
</script>


В данном случае лишь первый input работает, а второй только после потери фокуса. Прошу помочь разбирающимся.
Ответить с цитированием
  #2 (permalink)  
Старый 05.04.2014, 12:48
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Tedrik,
id неповторимо
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>

<body>
<form name="9mmammo">
<input type="text" id="count1" value="1"  oninput="calc1(+this.value||0)"><div>Сумма: <span id="result1">5</span> руб.</div>
</form>

<form name="556ammo">
<input type="text" id="count2" value="1" oninput="calc2(+this.value||0)"><div>Сумма: <span id="result2">10</span> руб.</div>
</form>

<script type="text/javascript">

	function calc1(amount)
	{
	document.getElementById('result1').innerHTML = amount * 5;
	}
	;
	function calc2(amount)
	{
	document.getElementById('result2').innerHTML = amount * 10;
	}

</script>

</body>

</html>
Ответить с цитированием
  #3 (permalink)  
Старый 05.04.2014, 13:05
Новичок на форуме
Отправить личное сообщение для Tedrik Посмотреть профиль Найти все сообщения от Tedrik
 
Регистрация: 05.04.2014
Сообщений: 3

Сообщение от рони Посмотреть сообщение
Tedrik,
id неповторимо
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>

<body>
<form name="9mmammo">
<input type="text" id="count1" value="1"  oninput="calc1(+this.value||0)"><div>Сумма: <span id="result1">5</span> руб.</div>
</form>

<form name="556ammo">
<input type="text" id="count2" value="1" oninput="calc2(+this.value||0)"><div>Сумма: <span id="result2">10</span> руб.</div>
</form>

<script type="text/javascript">

	function calc1(amount)
	{
	document.getElementById('result1').innerHTML = amount * 5;
	}
	;
	function calc2(amount)
	{
	document.getElementById('result2').innerHTML = amount * 10;
	}

</script>

</body>

</html>
Огромное спасибо, Вам плюсик!
Ответить с цитированием
  #4 (permalink)  
Старый 05.04.2014, 13:42
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

<form name="9mmammo">
  <input type="text" class="calc" value="1" data-operator="*" data-val="5">
  <div>Сумма:
    <span class="result">5</span>руб.</div>
</form>
<form name="556ammo">
  <input type="text" class="calc" data-operator="*" data-val="10" value="1">
  <div>Сумма:
    <span class="result">10</span>руб.</div>
</form>
<form>
  <input type="text" class="calc" data-operator="+" data-val="3" value="1">
  <div>Сумма:
    <span class="result">10</span>руб.</div>
</form>
<script type="text/javascript">
  var inputs = document.querySelectorAll("input.calc");
  var len = inputs.length;
  while (len--) inputs[len].onkeyup = showResult;
  function showResult() {
    var val = this.value = this.value.replace(/\D/g, '');
    if(!val) return;
    var operator = this.getAttribute("data-operator");
    var opval = this.getAttribute("data-val");
    var par = this.parentNode || this.parentElement;
    var rez = par.querySelector("span.result");
    rez.innerHTML = Function('return ' + val + operator + opval)();
  };
</script>
миникалькулятор

Последний раз редактировалось Vlasenko Fedor, 05.04.2014 в 14:10.
Ответить с цитированием
  #5 (permalink)  
Старый 05.04.2014, 13:57
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Poznakomlus,
Цитата:
\D Найдет нецифровой символ
Ответить с цитированием
  #6 (permalink)  
Старый 05.04.2014, 14:04
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

рони,
не понял, ну да найдет и удалит. Объясни, что имел ввиду
добавил if(!val) return;
this.value.replace(/\D/g, '');
а вот плюсануть не могу. Спасибо что поправил

Последний раз редактировалось Vlasenko Fedor, 05.04.2014 в 14:11.
Ответить с цитированием
  #7 (permalink)  
Старый 05.04.2014, 15:47
Новичок на форуме
Отправить личное сообщение для Tedrik Посмотреть профиль Найти все сообщения от Tedrik
 
Регистрация: 05.04.2014
Сообщений: 3

Сообщение от Poznakomlus Посмотреть сообщение
<form name="9mmammo">
  <input type="text" class="calc" value="1" data-operator="*" data-val="5">
  <div>Сумма:
    <span class="result">5</span>руб.</div>
</form>
<form name="556ammo">
  <input type="text" class="calc" data-operator="*" data-val="10" value="1">
  <div>Сумма:
    <span class="result">10</span>руб.</div>
</form>
<form>
  <input type="text" class="calc" data-operator="+" data-val="3" value="1">
  <div>Сумма:
    <span class="result">10</span>руб.</div>
</form>
<script type="text/javascript">
  var inputs = document.querySelectorAll("input.calc");
  var len = inputs.length;
  while (len--) inputs[len].onkeyup = showResult;
  function showResult() {
    var val = this.value = this.value.replace(/\D/g, '');
    if(!val) return;
    var operator = this.getAttribute("data-operator");
    var opval = this.getAttribute("data-val");
    var par = this.parentNode || this.parentElement;
    var rez = par.querySelector("span.result");
    rez.innerHTML = Function('return ' + val + operator + opval)();
  };
</script>
миникалькулятор
Спасибо, это как раз, то что нужно. Мне нельзя было менять id input'ов, а тут как раз, то что требовалось!
Ответить с цитированием
  #8 (permalink)  
Старый 16.04.2014, 23:07
Новичок на форуме
Отправить личное сообщение для abduRahman Посмотреть профиль Найти все сообщения от abduRahman
 
Регистрация: 16.04.2014
Сообщений: 4

Я решил добавить условие
function calc1(amount)
if (amount <=10)
{
document.getElementById('result1').innerHTML = amount * 140;
}
else {
document.getElementById('result1').innerHTML = amount * 130;
}

Но резльтат не выводит. Почему не подскажите??
Ответить с цитированием
  #9 (permalink)  
Старый 16.04.2014, 23:23
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

abduRahman,
а где у функции скобки? {}
Ответить с цитированием
  #10 (permalink)  
Старый 16.04.2014, 23:45
Новичок на форуме
Отправить личное сообщение для abduRahman Посмотреть профиль Найти все сообщения от abduRahman
 
Регистрация: 16.04.2014
Сообщений: 4

function calc1(amount){
if (amount <=10)
{
document.getElementById('result1').innerHTML = amount * 140;
}
else {
document.getElementById('result1').innerHTML = amount * 130;
}
};
ответ показывает долисекунды и пропадает. почему скажите пжлста
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь по javascript darklend Общие вопросы Javascript 0 12.01.2014 23:33
Нужна помощь: Slider wheel Alex555 Мобильный JavaScript 0 15.05.2013 18:06
Нужна помощь по слайдеру seoguru Работа 3 28.01.2013 22:02
При добавлении DOCTYPE "плывут" размеры input type=text Demath (X)HTML/CSS 4 08.07.2012 19:27
нужна помощь dominosoko Серверные языки и технологии 4 14.03.2010 02:17