专题1234导航

js 设置radio 状态改变,但html页面显示为改变

来源:互联网
发表时间:2017/4/19 14:40:01
责任编辑:李志喜
字体:
为了帮助网友解决“js 设置radio 状态改变,但html页面显示为改变”相关的问题,mr007通过互联网对“js 设置radio 状态改变,但html页面显示为改变”相关的解决方案进行了整理,用户详细问题包括:参加帖子:http://bbs.csdn.net/topics/392157640?page=1#post-402277580

请指教



                                    <tr>
                                        <td>心肺</td>
                                        <td style="width:10%">
                                            <label class="radio">
                                                <input type="radio" name="xinfei" value="0" checked="" data-toggle="radio">
                                            </label>
                                        </td>
                                        <td>未见异常</td>

                                        <td style="width:10%">
                                            <label class="radio">
                                                <input type="radio" name="xinfei"  value="1" data-toggle="radio">
                                            </label>
                                        </td>
                                        <td>异常</td>
                                    </tr>




$(document).ready(function(){
 
                    var xinfeiradio = document.getElementsByName("xinfei");
                    for(var i=0;i<xinfeiradio.length;i++){
                        if(xinfeiradio[i].value == 1){
                            xinfeiradio[i].checked = true;
                        }
                        else {
                            xinfeiradio[i].checked = false;
                        }
                    } 
 
        }


跟踪显示设置成功,但html页面没显示出来,具体解决方案如下:
解决方案1:
<table><tr>
    <td>心肺</td>
    <td style="width:10%">
        <label class="radio">
            <input type="radio" name="xinfei" value="0" checked="" data-toggle="radio">
        </label>
    </td>
    <td>未见异常</td>

    <td style="width:10%">
        <label class="radio">
            <input type="radio" name="xinfei" value="1" data-toggle="radio">
        </label>
    </td>
    <td>异常</td>
</tr></table>
</div><script type="text/javascript" src="http://pic.xue163.com/http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.3.min.js"></script>
<script>
    $(document).ready(function () {
        //result = { data: { xinfei: 0 } }
        result = { data: { xinfei: 1 } }
        var xinfeiradio = document.getElementsByName("xinfei");
        for (var i = 0; i < xinfeiradio.length; i++) {
            if (xinfeiradio[i].value == result.data.xinfei) {
                xinfeiradio[i].checked = true;
            }
            else {
                xinfeiradio[i].checked = false;
            }
        }

    });
</script>没问题,你使用了第三方的插件了没有,就是模拟radio的ui的,如果是第三方要用第三方的api来更新,不能直接操作dom
解决方案2:
跑了一下没有问题,可以运行也能改变单选按钮的状态
我觉得你还是得把完整代码贴出来,不然真很难猜到是哪个地方的问题
解决方案3:
引用 1 楼 showbo 的回复:
<table><tr>
    <td>心肺</td>
    <td style="width:10%">
        <label class="radio">
            <input type="radio" name="xinfei" value="0" checked="" data-toggle="radio">
        </label>
    </td>
    <td>未见异常</td>

    <td style="width:10%">
        <label class="radio">
            <input type="radio" name="xinfei" value="1" data-toggle="radio">
        </label>
    </td>
    <td>异常</td>
</tr></table>
</div><script type="text/javascript" src="http://pic.xue163.com/http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.3.min.js"></script>
<script>
    $(document).ready(function () {
        //result = { data: { xinfei: 0 } }
        result = { data: { xinfei: 1 } }
        var xinfeiradio = document.getElementsByName("xinfei");
        for (var i = 0; i < xinfeiradio.length; i++) {
            if (xinfeiradio[i].value == result.data.xinfei) {
                xinfeiradio[i].checked = true;
            }
            else {
                xinfeiradio[i].checked = false;
            }
        }

    });
</script>没问题,你使用了第三方的插件了没有,就是模拟radio的ui的,如果是第三方要用第三方的api来更新,不能直接操作dom


还真是用了一个第三方的 


/* =============================================================
 * flatui-radio v0.0.3
 * ============================================================ */

!function ($) {

 /* RADIO PUBLIC CLASS DEFINITION
  * ============================== */

  var Radio = function (element, options) {
    this.init(element, options);
  }

  Radio.prototype = {
  
    constructor: Radio
    
  , init: function (element, options) {      
      var $el = this.$element = $(element)
      
      this.options = $.extend({}, $.fn.radio.defaults, options);      
      $el.before(this.options.template);    
      this.setState();
    }   
    
  , setState: function () {    
      var $el = this.$element
        , $parent = $el.closest('.radio');
        
        $el.prop('disabled') && $parent.addClass('disabled');   
        $el.prop('checked') && $parent.addClass('checked');
    } 
    
  , toggle: function () {    
      var d = 'disabled'
        , ch = 'checked'
        , $el = this.$element
        , checked = $el.prop(ch)
        , $parent = $el.closest('.radio')      
        , $parentWrap = $el.closest('form').length ? $el.closest('form') : $el.closest('body')
        , $elemGroup = $parentWrap.find(':radio[name="' + $el.attr('name') + '"]')
        , e = $.Event('toggle')
      
        if ($el.prop(d) == false) {
            $elemGroup.not($el).each(function () {
              var $el = $(this)
                , $parent = $(this).closest('.radio');
                
                if ($el.prop(d) == false) {
                  $parent.removeClass(ch) && $el.removeAttr(ch).trigger('change');
                } 
            });
            
            if (checked == false) $parent.addClass(ch) && $el.prop(ch, true);
            $el.trigger(e);
          
            if (checked !== $el.prop(ch)) {
                $el.trigger('change'); 
            }
        }               
    } 
     
  , setCheck: function (option) {    
      var ch = 'checked'
        , $el = this.$element
        , $parent = $el.closest('.radio')
        , checkAction = option == 'check' ? true : false
        , checked = $el.prop(ch)
        , $parentWrap = $el.closest('form').length ? $el.closest('form') : $el.closest('body')
        , $elemGroup = $parentWrap.find(':radio[name="' + $el['attr']('name') + '"]')
        , e = $.Event(option)
        
      $elemGroup.not($el).each(function () {
        var $el = $(this)
          , $parent = $(this).closest('.radio');
          
          $parent.removeClass(ch) && $el.removeAttr(ch);
      });
            
      $parent[checkAction ? 'addClass' : 'removeClass'](ch) && checkAction ? $el.prop(ch, ch) : $el.removeAttr(ch);
      $el.trigger(e);  
          
      if (checked !== $el.prop(ch)) {
        $el.trigger('change'); 
      }
    }  
     
  }


 /* RADIO PLUGIN DEFINITION
  * ======================== */

  var old = $.fn.radio

  $.fn.radio = function (option) {
    return this.each(function () {
      var $this = $(this)
        , data = $this.data('radio')
        , options = $.extend({}, $.fn.radio.defaults, $this.data(), typeof option == 'object' && option);
      if (!data) $this.data('radio', (data = new Radio(this, options)));
      if (option == 'toggle') data.toggle()
      if (option == 'check' || option == 'uncheck') data.setCheck(option)
      else if (option) data.setState(); 
    });
  }
  
  $.fn.radio.defaults = {
    template: '<span class="icons"><span class="first-icon fa fa-circle-o"></span><span class="second-icon fa fa-dot-circle-o"></span></span>'
  }


 /* RADIO NO CONFLICT
  * ================== */

  $.fn.radio.noConflict = function () {
    $.fn.radio = old;
    return this;
  }


 /* RADIO DATA-API
  * =============== */

  $(document).on('click.radio.data-api', '[data-toggle^=radio], .radio', function (e) {
    var $radio = $(e.target);
    e && e.preventDefault() && e.stopPropagation();
    if (!$radio.hasClass('radio')) $radio = $radio.closest('.radio');
    $radio.find(':radio').radio('toggle');
  });
  
  $(function () {
    $('[data-toggle="radio"]').each(function () {
      var $radio = $(this);
      $radio.radio();
    });
  });

}(window.jQuery);



解决方案4:
引用 2 楼 xiaojunjor 的回复:
跑了一下没有问题,可以运行也能改变单选按钮的状态
我觉得你还是得把完整代码贴出来,不然真很难猜到是哪个地方的问题


代码就是你写的那样一个简单页面,第三方的那个我贴在上面,请问该用哪个api 处理?
谢谢
解决方案5:
多谢版主 showbo ,那个第三方的js文件我怎么发上来?
不是很大

菜鸟不会,请指教
解决方案6:
引用 5 楼 chilli6519 的回复:
多谢版主 showbo ,那个第三方的js文件我怎么发上来?
不是很大

菜鸟不会,请指教
css文件一起发出来,看了下代码应该是这样。。

        for (var i = 0; i < xinfeiradio.length; i++) {
            if (xinfeiradio[i].value == result.data.xinfei) {
                $(xinfeiradio[i]).data('radio').setCheck('check')
            }
            else {
                $(xinfeiradio[i]).data('radio').setCheck('uncheck')
            }
        }
解决方案7:
引用 1 楼 showbo 的回复:
是用了第三方的一个, 代码我贴在上面了,该用它哪个api改变?


谢谢版主

Quote: 引用 6 楼 showbo 的回复:



        for (var i = 0; i < xinfeiradio.length; i++) {
            if (xinfeiradio[i].value == result.data.xinfei) {
                $(xinfeiradio[i]).data('radio').setCheck('check')
            }
            else {
                $(xinfeiradio[i]).data('radio').setCheck('uncheck')
            }
        }



可以了,谢谢
www.xue163.com true http://www.xue163.com/588880/39215/392157733.html report 25651 js 设置radio 状态改变,但html页面显示为改变:解决方案1:<table><tr>    <td>心肺</td>    <td style="width:10%">        <label class="radio">       ...
相关信息
最近关注
首页推荐
热门图片
最新添加资讯
24小时热门资讯
精彩资讯
精彩推荐
热点推荐
真视界
精彩图片
社区精粹
关于本站 | 广告服务 | 手机版 | 商务合作 | 免责申明 | 招聘信息 | 联系我们
Copyright © 2004-2016 Xue163.com All Rights Reserved. mr007 版权所有
京ICP备10044368号-1 京公网安备11010802011102号