2016-03-02 4 views
2

У меня есть форма, которая выглядит как этот enter image description hereКак узнать, какую радиокнопку пользователь выбрал в Javascript?

Прямо сейчас, проблема, которую я имею, что пользователь может выбрать более 1 переключатель. Они должны только выбрать 1. У меня есть функция Javascript, которая будет проходить через все строки и отключить кнопку, которая не была выбрана, как показано здесь.

function disableNonSelectedRadioButtons(selectedRadioButton) { 
    $('#payer-contract-global-table .clone-target').each(function (i) { 
     var radioName = 'radio' + '-c' + i; 
     if (selectedRadioButton != radioName) 
      $('#' + radioName).prop("checked", false); 
    }); 
} 

Это работает. Но мне нужно отправить правильную selectedRadioButton на эту функцию. Как я могу правильно это сделать в Javascript?

В настоящее время HAML выглядит следующим образом:

%input.radio-button{:name => "radio-c#{index}", :type => "radio", :id => "radio-c#{index}", :checked => "true"} 

Есть некоторый тип кода в JavaScript, что я могу сделать, что говорит, что если я нажимаю кнопку radio-c2 он посылает, что моя функция?

+0

Почему вы не можете использовать обычный HTML и [дать своим переключателям одинаковое имя] (http://stackoverflow.com/questions/5419459/how-to-set-that-only-one-radio-button- может-быть проверено)? –

+0

@ Mdjon26 Непонятно, о чем вы просите, уточните вашу проблему более точно. – divy3993

+0

Поскольку из вашей Почты кажется, что вы просто хотите, это функциональность, которая позволяет выбирать только одно радио, за исключением того, что вам не нужен javascript. Просто @ SébastienVercammen упомянул. И если это не то, что вы хотите, уточните больше. – divy3993

ответ

2

Если вы обнаружите, что это событие не срабатывает, это происходит потому, что элемент DOM генерируются динамически (я думаю ...) я решаю так:

$(document).on('click', 'input[type="radio"]', function(e){ 
    var selectedRadioName = $(this).attr('name'); 
    disableNonSelectedRadioButtons(selectedRadioName); 
}); 

на всякий случай.

0

Вы можете использовать prop()

$('input[type="radio"]').click(disableNonSelectedRadioButtons($(this).prop('name'))); 
+0

Не используйте Javascript для работы с HTML. –

+0

Вопрос, заданный специально для Javascript. –

3

Если вы хотите использовать JQuery:

$('input[type="radio"]').click(function(e){ 
     var selectedRadioName = $(this).attr('name'); 
     disableNonSelectedRadioButtons(selectedRadioName); 
    }); 

Если вы создаете элементы динамически, делегирование использование событий: https://learn.jquery.com/events/event-delegation/

$(document).on('click', 'input[type="radio"]', function(e){ 
     var selectedRadioName = $(this).attr('name'); 
     disableNonSelectedRadioButtons(selectedRadioName); 
}); 

Это сказал, вы можете просто использовать HTML для этого:

<input type="radio" name="giveThemAllTheSameName" /> 

Давая радиокнопкам одноименное имя, вы можете только выбрать.

+0

JQuery работает в консоли, но не работает в моем приложении. Почему это? Нужно ли мне как-то активировать его? – Jay266

+0

Убедитесь, что у вас есть исходный код jQuery (или CDN: "https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js") перед указанным выше кодом. Вы также хотите отложить выполнение до тех пор, пока DOM не загрузится. т.е.: $ (document) .ready (function() { // выше код }); –

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