刷新没有jquery ui的单选按钮

时间:2017-07-02 21:23:21

标签: javascript jquery radio-button

TL; DR;如何正确实现$('#radioBtn')。checkboxradio(“refresh”);没有jquery ui库?

我正在开发一个项目,并且需要单选按钮无法选择+点击表格行,就像单击单选按钮一样。

我遇到的问题是在设置checked / not checked属性后必须刷新单选按钮。如何在不依赖jquery ui的情况下做到这一点? 有趣的是,如果你在单选按钮上调用任何函数(不存在),它就会被刷新。

注意:我要求更新单选按钮视图以显示正确的检查状态,而不是设置收音机的已检查状态。

https://jsfiddle.net/8uno2ybf/5/

$(function() {
  var inputClickHandler = function() {
    var previousValue = $(this).attr('previousValue');
    var name = $(this).attr('name');

    if (previousValue == 'checked') {
      $(this).prop('checked', false);
      $(this).attr('previousValue', false);
      $(this).checkboxradio("refresh"); //This refreshes it for some reason
    } else {
      $("input[name=" + name + "]:radio").attr('previousValue', false);
      $(this).attr('previousValue', 'checked');
    }
  };

  $("input[type='radio']").click(inputClickHandler);

  $('.monitored_table tbody tr').click(function(event) {
    if (event.target.type !== 'radio') {
      $(':radio', this).trigger("click");
    }
  });

  console.log("OnLoad");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table class="monitored_table">
  <tr>
    <td>Text1</td>
    <td>
      <input type="radio" name="group1" value="1">
    </td>
  </tr>
  <tr>
    <td>Text2</td>
    <td>
      <input type="radio" name="group1" value="2">
    </td>
  </tr>
  <tr>
    <td>Text3</td>
    <td>
      <input type="radio" name="group1" value="3">
    </td>
  </tr>
</table>

1 个答案:

答案 0 :(得分:0)

你不需要为此目的使用Jquery UI,Jquery就足够了。然而;您正在尝试执行一个不存在的函数,该函数会破坏您的代码流。您应该使用this函数检查函数是否存在。因此;一旦javascript代码失败,就可以在代码块中刷新