jQuery - checkboxes like radiobuttons

前端 未结 9 1674
小鲜肉
小鲜肉 2020-12-01 11:07

I have group checkboxes and I like if this group have behaviour like radiobuttons with same name atribute.

Each checkbox has different name.

Only one can be

9条回答
  •  無奈伤痛
    2020-12-01 11:26

    This live demo illustrates Radio Button can perform what you desired:

    http://jsfiddle.net/ftnwg8yf/

    function selectiongrp_control( s_selectiongrpName, b_useJQueryUiThemeToDecorate )
    {
    	var ADF_THIS_IS_LAST_SELECTED_ATTR='adf_this-is-last-selected-attr'
    	var ADF_THIS_IS_LAST_SELECTED_VALUE='adf_this-is-last-selected-val';
    
    	if ( !s_selectiongrpName ) return -1;
    
    	$( '#fieldset-' + s_selectiongrpName + '-result' ).hide();
    	if( b_useJQueryUiThemeToDecorate )   $( '#jQueryUi-' + s_selectiongrpName).buttonset();
    
    	$( 'input[name=' + s_selectiongrpName + ']' ).each( function()
    	{
    		$( this ).on( 'click', function()
    		{
    			if( $( this ).attr( ADF_THIS_IS_LAST_SELECTED_ATTR ) )
    			{
    				$( this ).removeAttr( 'checked' );
    				$( this ).removeAttr( ADF_THIS_IS_LAST_SELECTED_ATTR );
    			} else
    			{
    				$( this ).attr( ADF_THIS_IS_LAST_SELECTED_ATTR, ADF_THIS_IS_LAST_SELECTED_VALUE );
    			}
    
    			$( 'input[name=' + s_selectiongrpName + ']' ).not( this ).removeAttr( ADF_THIS_IS_LAST_SELECTED_ATTR );
    			if( b_useJQueryUiThemeToDecorate )   $( '#jQueryUi-' + s_selectiongrpName ).buttonset( 'refresh' );
    
    			if( $( 'input[name=' + s_selectiongrpName + ']:checked' ).length > 0 )
    			{
    				$( '#fieldset-' + s_selectiongrpName + '-resultarea' ).html( 'You have selected : [' + $( this ).val() + '].');
    			} else
    			{
    				$( '#fieldset-' + s_selectiongrpName + '-resultarea' ).html( 'Nothing is selected.' );
    			}
    			$( '#fieldset-' + s_selectiongrpName + '-result' ).show();
    		});
    	});
    }
    
    $( document ).ready( function() {
    	var ADF_USE_JQUERYUI_THEME_TO_DECORATE=true;
    	selectiongrp_control( 'selectiongrp-01', !ADF_USE_JQUERYUI_THEME_TO_DECORATE );
    	selectiongrp_control( 'selectiongrp-02', ADF_USE_JQUERYUI_THEME_TO_DECORATE );
    });
    
    
    
    
    
    
    
    
    
    
    
    
    

    Plain (without styling/decoration):

    Please click to select or re-click to deselect
    Result

    Decorated by "jQueryUI Theme":

    Please click to select or re-click to deselect
    Result

提交回复
热议问题