【问题标题】:How to get the values of checkbox instead of true如何获取复选框的值而不是 true
【发布时间】:2021-04-02 00:50:51
【问题描述】:

我想打印所选复选框的值而不是“自定义类别”。我试图获取值、属性但没有获取值。

我想打印选中复选框的值。

app.component.html

<form #myForm="ngForm">
<div class="form-group">
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" id="dl1" required #dl="ngModel" value="DL1" ngModel name="dl">
<label class="form-check-label" for="">DL 1</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" id="dl2" required #dl="ngModel" value="DL2" ngModel name="dl">
<label class="form-check-label" for="">DL 2</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" id="dl3" required #dl="ngModel" value="DL3" ngModel name="dl">
<label class="form-check-label" for="">DL 3</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" id="dl4" required #dl="ngModel" value="DL4" ngModel name="dl">
<label class="form-check-label" for="">DL 4</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" id="dl5" required #dl="ngModel" value="DL5" ngModel name="dl">
<label class="form-check-label" for="">DL 5</label>
</div>
<div *ngIf="dl.invalid" class="error">Please select atleast one DL.</div>
</div>
<div class="form-group">
<label>Comments</label>
<textarea name="comments" #comments="ngModel" required class="form-control" ngModel id="" cols="5" rows="5"></textarea>
<span *ngIf="comments.invalid && comments.touched" class="error">Please provide your comments.</span>
</div>
<div class="form-group">
<button type="submit" [disabled]="myForm.invalid" class="btn btn-primary btn-sm" (click)="addSubData(myForm.value)">Submit</button>
<button type="button" class="btn btn-secondary btn-sm ml-2" (click)="cancelAddUser()">Cancel</button>
</div>
</form>

app.component.ts

addSubData(user: any) {
let newData = this.userObj.assigned_to;
let i: any;
i = document.querySelectorAll('input[type="checkbox"]:checked').length;
for (let j=1; j<=i; ++j) {
newData.push(user);
user.dl = "Custom Category";
console.log(user.dl); 
}
user.sub_impact = "Applicable";
user.co_score = "Added";
this.commonService.updateUser(this.userObj).subscribe(()=> {
this.getLatestUser();
});
}

输出

直播:https://angular-ivy-ysaulb.stackblitz.io/

【问题讨论】:

  • " 我想显示值 DL1/DL2/DL3/DL4/DL5" 这是什么意思..你能解释更多
  • @JanithaRasanga 这是每个复选框的值。我想显示值而不是 true。这里的问题是:如果用户选择了 4 个复选框,那么在记录中添加 4 行以及选中的复选框值。
  • @JanithaRasanga 基于选中复选框的数量并点击提交,添加这些行

标签: javascript arrays json angular typescript


【解决方案1】:

根据specs,输入类型=“复选框”有两个值(真/假)。它甚至会警告预设的“值”。 你有两种方法可以得到你想要的东西:

  1. 使用 element.id.toUpperCase()
  2. 使用Data attributes

【讨论】:

  • 我试图弄清楚如何在上面的代码中使用。那么,在复选框上,我将添加一个 data-name="DL1" 并在函数中读取相同的内容并推送?
  • 在某个地方你有一个输入的引用(你在哪里得到它的 value 属性,假设 el 和 el.value,只需将 el.value 更改为 el.dataset.name
【解决方案2】:

这个小例子会有帮助吗?

const test = () => {
    const selected = [...document.querySelectorAll('input[type="checkbox"]:checked')].map(cb => {
    return cb.value;
    });
  console.log(selected);
}
<input class="form-check-input" type="checkbox" id="dl1" required #dl="ngModel" value="DL1" ngModel name="dl">
<label class="form-check-label" for="">DL 1</label>
<input class="form-check-input" type="checkbox" id="dl2" required #dl="ngModel" value="DL2" ngModel name="dl">
<label class="form-check-label" for="">DL 2</label>
<button onclick="test()">Test</button>

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多