jQuery - пытался проверить, включена ли кнопка радио, но он говорит, что это даже когда это не так - PullRequest
0 голосов
/ 19 декабря 2018

Я искал полчаса, чтобы попытаться заставить работать функцию, которая отменяет проверку моих радиокнопок при повторном нажатии.Моя функция в настоящее время выглядит следующим образом (с предупреждением, чтобы увидеть, что происходит, черт возьми):

function radUncheck(id)
{
    alert(id + " " + $("#" + id).prop('checked'));
    if ($("#" + id).prop('checked'))
    {
        alert($("#" + id).prop('checked'));
        $("#" + id).prop('checked', false);
    }

}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="radio" id="semesterlage-ss-a" name="semesterlage" value="SS" onclick="radUncheck(\'semesterlage-ss-a\')"/>
						<label for="semesterlage-ss-a">SS</label>
<input type="radio" id="semesterlage-ws-a" name="semesterlage" value="WS" onclick="radUncheck(\'semesterlage-ss-a\')"/>
						<label for="semesterlage-ws-a">WS</label>

Однако всякий раз, когда я пытаюсь это сделать, он говорит, что # semesterlage-ss-a будет верным (проверено), независимо от того, есть это или нет, и # semesterlage-ws-a будет ложным (непроверенным) независимо от того, есть он или нет.

Ответы [ 3 ]

0 голосов
/ 19 декабря 2018

Для этого можно использовать атрибут данных.

См. Пример:

function radUncheck(el) {
  if ($(el).data('checked')) {
    $('input[type="radio"]').prop('checked', false).data('checked', '');
  } else {
    $('input[type="radio"]').data('checked', '');
    $(el).data('checked', true);
  }
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="radio" id="semesterlage-ss-a" data-checked="" name="semesterlage" value="SS" onclick="radUncheck(this)" />
<label for="semesterlage-ss-a">SS</label>
<input type="radio" id="semesterlage-ws-a" data-checked="" name="semesterlage" value="WS" onclick="radUncheck(this)" />
<label for="semesterlage-ws-a">WS</label>

Примечание. Используйте console.log вместо alert для отладки кода.

0 голосов
/ 19 декабря 2018

попробуйте это или перейдите по этой ссылке, может быть полезным для вас. Как проверить, установлен ли переключатель с помощью JQuery?

 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>  
     function radUncheck(id)
        {
          var radioValue = $("input[name='semesterlage']:checked").val();
          if ($("#radio1").prop("checked")) {
            // do something
          }
          // OR
          if ($("#radio1").is(":checked")) {
            // do something
          }
          // OR if you don't have ids set you can go by group name and value
          // (basically you need a selector that lets you specify the particular input)
          if ($("input[name='radioGroup'][value='1']").prop("checked"))
         }
         <!-- language: lang-html -->
         <input type="radio" id="semesterlage-ss-a" name="semesterlage" value="SS" onclick="radUncheck(\'semesterlage-ss-a\')"/>
                    <label for="semesterlage-ss-a">SS</label>
        <input type="radio" id="semesterlage-ws-b" name="semesterlage" value="WS" onclick="radUncheck(\'semesterlage-ss-b\')"/>
                    <label for="semesterlage-ws-b">WS</label>
0 голосов
/ 19 декабря 2018

Вам необходимо присвоить атрибут данных радио.Это указывает на состояние радиоприемника (проблема в том, что радиоприемник всегда включен).

function radUncheck(elm) {

  if ($(elm).data('checked')) {     // If the radio is already checked
    $(elm).prop('checked', false);  // Uncheck this radio
    $(elm).data('checked', '');     // Remove data attribute

  } else {
  var name = $(elm).attr('name');   // Get the name of this radio
    $('input[name="' + name + '"]').data('checked', ''); // remove all data attributes from this radio name group
    $(elm).data('checked', true);   // Set new data attribute to this radio to indicate that it is selected
  }
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="radio" id="semesterlage-ss-a" name="semesterlage" value="SS" onclick="radUncheck(this)"/>
						<label for="semesterlage-ss-a">SS</label>
<input type="radio" id="semesterlage-ws-a" name="semesterlage" value="WS" onclick="radUncheck(this)"/>
						<label for="semesterlage-ws-a">WS</label>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...