2013-07-31 1 views
0

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

$('[name^=business_] option:selected').each(function(){ 
    var bus = $(this).text(); 
    alert(bus); 
}); 

Это возвращает выбранные значения всех выпадающие с именем, начинающимся с business_ - это прекрасно.

Что мне нужно, если none выпадающих списков имеют выбранное значение, равное или превышающее 1, а затем вернуть предупреждение.

Но я не могу понять, как этого добиться, я пробовал смотреть на добавление ценностей вместе, но без радости - любые указатели приветствуются.

ответ

3

Идите по выпадающим спискам, и как только вы найдете значение со значением больше единицы, установите флаг и сломайте цикл.

var foundOne = false; 
$('[name^=business_] option:selected').each(function() { 
    if ($(this).val() >= 1) { 
     foundOne = true; 
     return false; 
    } 
}); 

if (!foundOne) { 
    alert('No selected options had a value of 1 or higher'); 
} 
+0

Спасибо за ответ, но не совсем там - то, что мне нужно, если все '10' выпадающие являются не равный или превышающий 1, тогда должно произойти предупреждение, а не на каждой итерации. Имеет ли это смысл? –

+0

@Homer_J вижу мое обновление. –

+0

Я думаю, вы можете быть смущены на 'return false;'. Это возвращается из анонимной функции внутри 'each()'. Он не возвращается из любой функции проверки, в которой все это содержится. Вы можете «вернуть false» из 'each()', чтобы разбить цикл и остановить итерацию. –

0

Почему бы не использовать .filter() затем проверьте length:

var arr = $('select option:selected').filter(function(){ 
     if(this.value > 1) 
      return this; 
    }); 

    if(arr.length) // arr.length > 0 also valid 
     alert('yes'); 

DEMO: http://jsfiddle.net/vaTVX/1/

+0

Потому что нам нужен только один элемент для соответствия критериям. 'filter()' будет перебирать весь список, даже если первый элемент соответствует условию успеха. –

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

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