2013-07-24 4 views
0

у меня есть ряд переключателей следующим образом:JQuery проверка значения нескольких переключателей

<input type="radio" name="r1" value="1" /> 
<input type="radio" name="r1" value="2" /> 
<input type="radio" name="r1" value="3" /> 
<input type="radio" name="r1" value="4" /> 
<input type="radio" name="r1" value="-1" /> 

<input type="radio" name="r2" value="1" /> 
<input type="radio" name="r2" value="2" /> 
<input type="radio" name="r2" value="3" /> 
<input type="radio" name="r2" value="4" /> 
<input type="radio" name="r2" value="-1" /> 

<input type="radio" name="r3" value="1" /> 
<input type="radio" name="r3" value="2" /> 
<input type="radio" name="r3" value="3" /> 
<input type="radio" name="r3" value="4" /> 
<input type="radio" name="r3" value="-1" /> 

Что мне нужно сделать, это запустить проверку, чтобы увидеть, если любой из переключателей, выбранных имеют значение equal to or less than 2 but greater than zero, а затем запустите некоторый код или greater than 2, и если они это сделают, запустите еще один код.

Я достиг этого ранее с помощью javascript, но это был долгий и трудоемкий процесс. Есть ли эффективный способ в jQuery для этого?

+1

Что вы пробовали себя? А также, почему у вас есть радиобудильник со значением -1, если вы хотите, чтобы код запускался, если значение равно или меньше 2, но больше нуля. – putvande

+0

Если это упростит, я могу изменить код, чтобы заменить -1 на «X», но это устаревший код, и я хочу как можно меньше изменить то, что уже есть. В терминах предыдущего кода он буквально проверял, проверялся ли каждый флажок с помощью javascript, например: document.getElementById ('r1a1'). Checked = false; '(где rqa1 был идентификатором для переключателя) для каждого переключателя - отлично, если есть только несколько, но на некоторых страницах я буду иметь в области 50 плюс переключатели. –

ответ

2
$('input[type="radio"]:checked').each(function() { 
    if (this.value > 0 && this.value <= 2) { 
     // do something if the value is less than zero and below or equal to two 
    }else if (this.value > 2) { 
     // do something else if the value is greater than two 
    } 
}); 
+0

Следует ли запускать этот код каждый раз, когда пользователь выбирает радиокнопку или может быть запущен после того, как пользователь выбрал последний переключатель? –

+0

@Homer_J - ответить невозможно, сделай все, что хочешь. Если вам нравится запускать код каждый раз, когда вы выбираете радио, вы делаете это, если у вас есть «отправить» или что-то в этом роде, когда пользователь закончит выбор, вы можете проверить все перед отправкой и т. Д. Это действительно зависит от вас! – adeneo

+0

Извинения, просто пытаясь окунуться в jQuery - если я запустил этот код на форме 'submit', он проверяет каждый переключатель на странице? –

0
$('input[type=radio]').on('change', function(){ 
    if((this.val() > 0) && (this.val() <=2)) { 
    //Todos 
    } 
    else if(this.val() > 2) { 
    //Todos 
    }  
}); 
0
var $lessOrEqual2AndGreatZero = $('input[type="radio"]:checked').filter(function(elem){ 
    return ($(elem).val() > 0 && $(elem).val() <= 2); 
}); 


if ($lessOrEqual2AndGreatZero.length){ 
    // code 
} else { 
    var $greaterThanTwo = $('input[type="radio"]:checked').filter(function(elem){ 
     return ($(elem).val() > 2); 
    }); 
    if ($greaterThanTwo.length){ 
     // more code 
    } 
} 
0

Если я правильно понял ваш вопрос:

var check = $(':radio:checked').is(function() { 
    return this.value <= 2 && this.value > 0 
}); 

if(check) 
    //at least one radio button which is checked as value > 0 but less or equal to 2 
0
var radios = $('input[type="radio"]'); 

function areAnyInRange() { 
    return radios.filter(':checked').filter(function() { 
     return (+this.value > 0 && +this.value <= 2); 
    }).length > 0; 
} 

function inRange() { 
    if(areAnyInRange()) { 
     console.log('radios in range!');  
    } else { 
     console.log('no radios in range :('); 
    } 
} 

inRange(); 
radios.change(inRange); 

jsfiddle: http://jsfiddle.net/JZfeT/1/

Как код работает:

  • areAnyInRange петли через проверяемых радиоприемников и возвращает истину, если какие-либо значения находятся в диапазоне
  • это удовольствие вызывается один раз на выполнение кода, а затем каждый раз радиоприемники изменить

 Смежные вопросы

  • Нет связанных вопросов^_^