Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Изменение value при выборе radio кнопки (https://javascript.ru/forum/misc/53248-izmenenie-value-pri-vybore-radio-knopki.html)

DarkMilkMan 26.01.2015 19:27

Изменение value при выборе radio кнопки
 
Подскажите как сделать что бы когда input radio выбран его value становилось 1 а когда не выбран 0?
С checkbox'ом у меня получилось
<input type="radio" name="ves" id="ves1" value="0"  onchange="addIt(this.value = this.checked ? 10 : 0)">

А с радио кнопкой он меняется 1 раз, и больше не меняется.

danik.js 26.01.2015 19:35

В этом нет нужды. Просто где нужно делай непосредственно проверку if (this.checked) вместо if (this.value == "1")

DarkMilkMan 26.01.2015 19:39

Забыл сказать что я полный ноль, в js и кое как учусь, не могли бы вы поподробнее рассказать как это сделать?

danik.js 26.01.2015 19:41

А как ты хочешь сделать это со сменой value? Код покажи.

DarkMilkMan 26.01.2015 19:50

Вот код
<form action="" method="post" id="frm" onsubmit="return checkForm()"> 
<div id="mydiv" style="display:block;">
					<div id="mydiv-block">
					<input type="radio" name="ves" id="ves1" value="0" class="test"
					onchange="addIt(this.value = this.checked ? 10 : 0)">
					<label for="ves1">от 1кг до 3кг</label>
					</div>
					
					<div id="mydiv-block">
					<input type="radio" name="ves" id="ves2" value="0" class="test"
					onchange="addIt(this.value = this.checked ? 100 : 0)">
					<label for="ves2">от 3кг до 5кг</label>
					</div>
					
					<div id="mydiv-block">
					<input type="radio" name="ves" id="ves3" value="0" class="test"
					onchange="addIt(this.value = this.checked ? 1000 : 0)">
					<label for="ves3">от 5кг до 15кг</label>
				    </div>
				</div>
				 <label for="price" class="name-mail-php">Стоимость товара, рос. руб.:<span>*</span></label><br>
            <input type="number" id="price" name="price" maxlength="300" required onchange="addIt()" ><br>
            <label for="pricedeliv" class="name-mail-php">Стоимость комиссии за доставку в РБ, рос. руб.:</label><br>
            <input type="number" id="pricedeliv" name="pricedeliv"  maxlength="300" required readonly onkeyup="addIt()"><br><span2>10% от стоимости заказа</span2>
				<div id="maineu-dost">
				Стоимость доставки:<input type="number" id="dostavkas" value="0" readonly>руб
				</div>
				<input type="number" id="itog" name="789" maxlength="300" readonly><br>
				</form>
<script type="text/javascript">
<!--
function addIt() { 
var value1 = parseInt(document.getElementById("ves1").value);
var value2 = parseInt(document.getElementById("ves2").value);
var value3 = parseInt(document.getElementById("ves3").value); 
var value4 = parseInt(document.getElementById("price").value);
var value5 = parseInt(document.getElementById("pricedeliv").value);
var value6 = parseInt(document.getElementById("dostavkas").value);
document.getElementById("pricedeliv").value = 0.1 * value4;
document.getElementById("itog").value = value1 + value2 + value3 + value4 + value5 + value6;
document.getElementById("dostavkas").value = value1 + value2 + value3;
}
// -->
</script>

DarkMilkMan 26.01.2015 19:52

Знаю что кое где id повторяются, но это никак ведь не влияет на то что мне нужно

danik.js 26.01.2015 20:15

<form action="" method="post" id="frm" onsubmit="return checkForm()">
<div id="mydiv" style="display:block;">
        <div id="mydiv-block">
        <input type="radio" name="weight" id="ves1" value="10" class="test">
        <label for="ves1">от 1кг до 3кг</label>
        </div>
         
        <div id="mydiv-block">
        <input type="radio" name="weight" id="ves2" value="100" class="test">
        <label for="ves2">от 3кг до 5кг</label>
        </div>
         
        <div id="mydiv-block">
        <input type="radio" name="weight" id="ves3" value="1000" class="test">
        <label for="ves3">от 5кг до 15кг</label>
        </div>
    </div>
     <label for="price" class="name-mail-php">Стоимость товара, рос. руб.:<span>*</span></label><br>
<input type="number" id="price" name="price" maxlength="300" required><br>
<label for="pricedeliv" class="name-mail-php">Стоимость комиссии за доставку в РБ, рос. руб.:</label><br>
<input type="number" id="pricedeliv" name="pricedeliv"  maxlength="300" required readonly><br><span2>10% от стоимости заказа</span2>
    <div id="maineu-dost">
    Стоимость доставки:<input type="number" id="dostavkas" value="0" readonly>руб
    </div>
    <input type="number" id="itog" name="789" maxlength="300" readonly><br>
    </form>
<script>
(function(){
	var form = document.forms.frm;
	form.onchange = form.oninput = calcTotal;
	function calcTotal() {
		var weight = 0;
		for ( var i = 0; i < form.weight.length; i++) {
			weight += form.weight[i].checked * +form.weight[i].value;
		}
		var price = +form.price.value;
		var deliveryPrice = +form.pricedeliv.value;
		var huyPoimiChe = +form.dostavkas.value;

		form.pricedeliv.value = 0.1 * price;
		form.itog.value = weight + price + deliveryPrice + huyPoimiChe;
		form.dostavkas.value = weight;
	}
})();
</script>

DarkMilkMan 26.01.2015 20:21

Спасибо огромное, но смотрите если переключать вес с 3 на 2 пункт то конечная цифра не меняется

DarkMilkMan 26.01.2015 20:27

То есть нужно ещё сделать так, что бы при выборе другого пункта, прошлый обнулялся

danik.js 26.01.2015 20:31

Цитата:

Сообщение от DarkMilkMan
конечная цифра не меняется

Я просто переписал твой код в другом виде. Логика расчетов сохранена.
У тебя явно ошибка - ты в расчетах используешь результаты предыдущего рассчета:
Цитата:

Сообщение от DarkMilkMan
document.getElementById("itog").value = value1 + value2 + value3 + value4 + value5 + value6;

Тут value5 и value6 - значения из инпутов, которые были вычислены при предыдущем расчете.


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