jquery - избран radio input

djman

Registered
Имам следния код:

HTML:
<form action="#" method="post" class="form-stacked" onsubmit="return false;" id="conf">
    <input type="radio" name="step1" value="0" />
    <span>дизел</span>

    <input type="radio" name="step1" value="1" />
    <span>бензин</span>
    <a href="javascript:;" class="btn">Следваща стъпка »</a>
    ...
</form>

[js]$('#conf input[name=step1][type=radio]').click(function(){
var val = parseInt($('#conf input[name=step1]:radio:checked').val());
$('.btn').show().click(function(){
alert(val);[/js]


Проблемът е, че ако натисна повече от 1 път някой радио бутон, в променливата val се записват всички избори и то в същия ред. Съответно alert прозорчето излиза няколко пъти. После информацията от тая промелива я вкарвам в <table> - и там се отразява няколко пъти. Как е възможно това и има ли начин да взема стойността на последния избран radio бутон?
 
Не разбирам от джава скрипт. Но предполагам ако тази форма ти е в цикъл се получава така. Пример при PHP как да си го съставиш:

Код:
<form action="#" method="post" class="form-stacked" onsubmit="return false;" id="conf">

//Началот на цикъла while() {
    <input type="radio" name="step1" value="0" />

    <span>дизел</span>



    <input type="radio" name="step1" value="1" />

    <span>бензин</span>

    <a href="javascript:;" class="btn">Следваща стъпка »</a>

    ...
// Край на цикъла }
</form>

Давам ти пример с php просто за да разбереш къде може да грешиш, пак повтарям не разбирам от jquery, java script и тем подобни, но при мен беше същата грешка докато не забелязаш, че съм бутнал цялата форма в цикъл.

Само input трябва да е в цикъл.
 
Ми не, на страницата изобщо няма php.

Забелязах че проблема идва от това, че показвам бутона когато се натисне който и да е radio бутон с име step1... :roll:
 
правиш така:
Всеки бутон трябва да си има определено id

<input type="radio" id="1" name="value1" value="val1" onclick="butonclick(this.id)" />
<input type="radio" id="2" name="value2" value="val2" onclick="butonclick(this.id)" />
<input type="radio" id="3" name="value3" value="val3" onclick="butonclick(this.id)" />

function butonclick(id){
var val = jQuery("#"+id).val();
console.log(val);
}

Това е просто пример
 
Това става, защото всеки път като викаш .click(), ти не заместваш старата функция, а просто добавяш нова. Накрая при натискане на линка, всички дефинирани функции се изпълняват поред.

Затова .click() го викаш само веднъж, ето така:

[js]
$('.btn').click(function(){
var val = parseInt($('#conf input[name=step1]:radio:checked').val());
alert(val);
});
$('#conf input[name=step1][type=radio]').click(function(){
$('.btn').show();
});
[/js]
 

Back
Горе