只允许从多组复选框中选择一个单选按钮

时间:2015-08-06 14:03:27

标签: javascript angularjs

我有很多帐户项目。

我在列表中显示这些内容,如

<md-list-item ng-repeat="item in items">

并且对于每个这样的项目,我在组中显示三个单选按钮,保持值

  • admin
  • 用户
  • 慢化剂

现在,用户可以为每组单选按钮选择一个值,但我想要做的只有一个管理员。

因此,如果选择了管理员值,我应该阻止所有其他管理员单选按钮。

如何做到这一点?

3 个答案:

答案 0 :(得分:2)

使用ng-change方法将管理项存储在范围属性中,以跟踪管理员选择了哪个项目:

$scope.radioChanged = function (item) {
  if (item.selectedValue == "admin") {
    $scope.admin = item;
  }
  else if (item == $scope.admin) {
    $scope.admin = undefined;
  }
};

然后在管理单选按钮上使用ng-disabled,如果选择了管理员并且管理员不是当前项目,则会禁用单选按钮。

<div ng-repeat="item in items">
  <label><input type="radio" name="{{item.id}}" value="admin" ng-model="item.selectedValue" ng-change="radioChanged(item)" ng-disabled="admin && item != admin"/>admin</label>
  <label><input type="radio" name="{{item.id}}" value="user" ng-model="item.selectedValue" ng-change="radioChanged(item)"/>user</label>
  <label><input type="radio" name="{{item.id}}" value="moderator" ng-model="item.selectedValue" ng-change="radioChanged(item)"/>moderator</label>
</div>

Plunkr

答案 1 :(得分:1)

我会创建一个变量,可能是#combine and create x and y (as mappings follow #same pattern) df.1$group <- "df.1" df.1$x <- df.1$A df.1$y <- df.1$B df.2$group <- "df.2" df.2$x <- df.2$C df.2$y <- df.2$D library(plyr) #for rbind.fill df.all <- rbind.fill(df.1,df.2) plot3 <- ggplot(df.all, aes(x=x,y=y,group=group)) + geom_point(color='black', cex=1, pch=16 ) + geom_smooth(aes(linetype=group),method="lm", size=1, se=FALSE, colour="black") + scale_y_continuous("Y scale") + ggtitle("Plot") + theme_bw()+ theme(plot.title = element_text(face="bold", size=20), axis.title.x = element_text(vjust=-0.25), axis.title.y = element_text(vjust=1), axis.title = element_text(face="bold", size=15) ) + #add custom linetypes (not necessary now, as default mapping to 1 and 2) plot3 + scale_linetype_manual(values=c("df.1"=1,"df.2"=2)) ,当您选择“管理员”时,该变量设置为adminExists。在任何单选按钮上。然后你可以拥有所有的&#34; Admin&#34;单选按钮被禁用true,如果该单选按钮是所选的管理按钮,则if(adminExists && !isSelected)为真。

答案 2 :(得分:0)

下面的代码检查所选单选按钮的值与其他单选按钮的值,以查看它们是否匹配(在这种情况下,如果值为&#34; admin&#34;)。然后,它取消选择具有该值的所有无线电输入元素,然后检查最初单击或选择的元素以将其设置为活动。如果您也喜欢,可以将功能更改为使用数据属性而不是值。

&#13;
&#13;
 <!-- build:js -->
    <script src="js/player.js"></script> 
    <script src="js/monster.js"></script> 
    <script src="js/world.js"></script> 
<!-- endbuild -->
    var gulp = require('gulp');
    var htmlreplace = require('gulp-html-replace');

    gulp.task('default', function() {
      gulp.src('index.html')
        .pipe(htmlreplace({
            'css': 'styles.min.css',
            'js': 'js/bundle.min.js'
        }))
        .pipe(gulp.dest('build/'));
    });
&#13;
$(".group input[type=radio]").bind("click change keydown focus", function () {
    var el = $(this);
    var val = el.val();
    if (el.prop("checked", true) && val == "admin") {
        $(".group input[type=radio]").each(function () {
            if ($(this).val() == "admin") $(this).prop("checked", false);
        });
        el.prop("checked", true);
    }
});
&#13;
.choice {
    display:block;
}
&#13;
&#13;
&#13;