IDs shouldn't start with a number
Таким образом, даже если вы используете O
вместо 0
на $('#O1')
, это действительно не должно быть 0
, чтобы начать с.
И используя $('#02').prop ('checked',true)
, не будет работать так, как вы хотите, чтобы он находился в операторе if
, потому что он предназначен для установки состояния, не проверяя состояние, как $('#O1').is (':checked')
делает прямо перед ним.
Вы также используете parseInt
, когда вы обновляете общее число, но значения должны быть целыми в этой точке; так что это не обязательно.
Большая проблема может заключаться в том, что значения по умолчанию никогда не сбрасываются, когда выполняется другой выбор, если он работает при изменении. Если он отключен от события из другого элемента, это не будет проблемой.
это может быть проще
Ниже решает обе проблемы, и не нужно знать текущее состояние, чтобы сделать это на изменения.
HTML:
<select id="select">
<option value"Basic">Basic</option>
<option value"Highspeed">Highspeed</option>
<option value"Extreme">Extreme</option>
</select>
<label for="email">email<input type="radio" name="rad" id="email"/></label>
<label for="rent">rent<input type="radio" name="rad" id="rent"/></label>
<button>click me</button><!-- something to click -->
JQuery:
var sets={Basic:15,Highspeed:30,Extreme:60,rent:100,email:0},//set defaults
selection=sets.Basic,email=sets.email,rent=sets.rent,total;//set vars
//run on change
$('#select,input[name="rad"]').on('change', function() {//on change
this.id==='select'?selection=sets[$(this).val()]://set select
this.id==='email'?(email=5,rent=sets.rent)://set email
(rent=2,email=sets.email);//set rent
total=selection+email+rent;//update total
});
//run on click
$('button').on('click', function() {
$('#select,input[name="rad"]').each(function() {
if(this.id==='select'){selection=sets[$(this).val()]}//set select
else if(this.id==='email'&&this.checked){email=5,rent=sets.rent}//set email
else if(this.checked){rent=2,email=sets.email}//set rent
});
total=selection+email+rent;//update total
});
сделал скрипку: http://jsfiddle.net/filever10/CsDH4/
Как это? http://jsfiddle.net/pRawE/ –
Привет, scrowler, не совсем. См. Общее количество переменных; в верхней части экрана? Я дал ему значение в нижней части экрана, которое включает в себя ренту. Общее значение var будет отображаться как часть
. Я вставил вот так: '+ total +', поэтому мне не нужен .html() – AshAsh, это пример того, как выбрать ваши радиостанции –