JQuery - если ЛЮБОЙ Select внутри div имеет значение - PullRequest
1 голос
/ 20 января 2012

У него было много проблем с этим.Допустим, у меня был следующий html:

<div id='step_1'>

  <select name='select_1' id='choose'>
    <option value='select one'>Select One</option>
    <option value='yes'>Yes</option>
    <option value='no'>No</option>
  </select>

  <select name='select_2' id='choose_again'>
    <option value='select one'>Select One</option>
    <option value='yes'>Yes</option>
    <option value='no'>No</option>
  </select>

  <button id='submit'>button</button>

</div>

У меня их много, поэтому я пытаюсь вернуть false, если ЛЮБОЙ «select» имеет значение «Select One», и предупредить,JQuery, который у меня есть, выглядит так:

$('#submit').click(function() {
if ($('#step_1 select[value="select one"]').length() == 0) {
    //succeed
} else {
    alert('Please select yes or no!');
    return false;
}

});

Что я делаю не так?Заранее спасибо, я люблю этот сайт!:)

Ответы [ 3 ]

1 голос
/ 20 января 2012
$('#submit').click(function(e) {
   var flag = true;
    $('select').each(function(){
     if($(this).val() == "select one"){
        alert("please select a value in " + $(this).attr("name"));
         flag = false;
     }
   });
    if(flag){
     alert('perfect');    
    }else{
      e.preventDefault();
    }
});

ПРИМЕР: http://jsfiddle.net/raj_er04/3kHVY/1/

Краткое примечание: если вы хотите, чтобы предупреждение отображалось только один раз, а не один раз для каждого «выберите один», просто переместите предупреждение () в оператор else {,Еще раз спасибо за этот ответ!

1 голос
/ 20 января 2012

Вы можете сделать это с помощью $ .each ():

$('#step_1').find('SELECT').each( function() {
    if( $(this).val() === 'select one' ) {
        alert('Please select yes or no!');
        return false;
    }
});

Обратите внимание, что возвращение false будет препятствовать продолжению цикла после обнаружения отсутствующего поля.

0 голосов
/ 20 января 2012

Ваш тест не пройден, потому что length не является методом. Это собственность. Удалить (). Если вы посмотрите в свой отладчик, вы должны увидеть предупреждение об этом.

Кроме того, ваш селектор должен проверять выбранную опцию, а не сам список выбора.

http://jsfiddle.net/7PPs4/

$('#submit').click(function() {
    $foo = $('#step_1 select option:selected[value="select one"]');
    alert($foo.length);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...