2016-11-25 6 views
4

Я эту проблему, я получил эти радио кнопкиОшибка Кнопка выбора радио с JQuery

<input type="radio" name="bank" id="bank-1" data-movt="0"> Bank 1 <br /> 
<input type="radio" name="bank" id="bank-2" data-movt="0"> Bank 2 <br /> 

И когда я прижимаюсь кнопку «Сохранить» это, предполагают, чтобы получить имя id и значение data-movt , но вместо того, что всегда получает значение первой radio кнопки

<button type="button" id="save-bank" class="btn-save">Save</button> 

Когда я выбираю кнопка второго радио всегда отображает мое сообщение об ошибке, это мой JQuery код:

$('#save-bank').click(function() { 

    if ($('[name="bank"]').prop('checked') == true) { 

     var id = $('[name="bank"]').attr('id'); 
     var movt = $('[name="bank"]').data('movt'); 

     alert(id + ' - ' + movt); 

    } else { 

     alert('You need to select a bank'); 
    } 
}); 

Я делаю что-то неправильно? что-то не хватает? потому что он работает только с первым переключателем, я могу выбрать только один переключатель, но мне нужно получить значения выбранного радио, надеюсь, вы можете мне помочь, спасибо.

+2

'$ (selector) .prop ('checked')' всегда будет проверять свойство 'checked' на первом селекторе выбора элементов. С помощью переключателя ': checked' выберите отмеченный переключатель. '$ ('[Имя = "банк"]: проверено')'. [Здесь обновлен код с небольшим улучшением] (https://jsfiddle.net/tusharj/9dgx56jL/) – Tushar

+0

@Tushar благодарит за ваш ответ, но я попробовал ваш код и не работает, в обоих случаях он отображает сообщение об ошибке – Fixer

ответ

1

Попробуйте ... это должно обеспечить единый элемент, а не всех [name="bank"] элементов.

if ($('[name="bank"]:checked')) { 
     var id = $('[name="bank"]:checked').attr('id'); 
     var movt = $('[name="bank"]:checked').data('movt'); 
     alert(id + ' - ' + movt); 
    } else { 
     alert('You need to select a bank'); 
    } 

В то время как вы можете перебрать все элементы, это более простой способ, чтобы выбрать правильный «один» элемент без накладных расходов на JavaScript зацикливание.

+0

Теперь, когда я выбираю второе радио, не отображается сообщение об ошибке, но отображает ту же самую информацию, которая имеет первую радиокнопку – Fixer

+0

Пожалуйста, дважды проверьте код; Я заметил ошибку во второй и третьей строках кода, забыл ': checked', который сужает выбор при получении значений ... вы, возможно, получили код, прежде чем я сделал это исправление. – rfornal

+0

Awesome; извините, что отсутствует тот. Сегодня много индейки, сонливость. – rfornal

0

Вам необходимо проверить каждый из переключателей, чтобы проверить, не проверено ли оно. После того, как вы проверите, что переключатель установлен, вы используете селектор как $('[name="bank"]'), чтобы получить attr, даст вам attr первого объекта, найденного с этим селектором.

$(function(){ 
 
    $('#save-bank').click(function() { 
 
     var count = 0; 
 
     $('[name="bank"]').each(function(){ 
 
     
 
     if ($(this).prop('checked') == true) { 
 
      
 
      var id = $(this).attr('id'); 
 
      var movt = $(this).data('movt'); 
 

 
      alert(id + ' - ' + movt); 
 

 
     } else{ 
 
      count++; 
 
     } 
 
     }) 
 
     if(count == 2) { 
 
     alert('Select a radio button'); 
 
     } 
 
     
 
    }); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="radio" name="bank" id="bank-1" data-movt="0"> Bank 1 <br /> 
 
<input type="radio" name="bank" id="bank-2" data-movt="0"> Bank 2 <br /> 
 
<button type="button" id="save-bank" class="btn-save">Save</button>

+0

Спасибо за ваш ответ, но проблема решена с ответом @rfornal – Fixer

+2

Нет проблем. Это также способ, которым вы можете достичь того же, хотя код @rfornal короче –

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