【问题标题】:Angular2+ (click) event on radio button not working on Safari/iOS单选按钮上的 Angular2+(单击)事件在 Safari/iOS 上不起作用
【发布时间】:2018-08-21 18:21:34
【问题描述】:

该页面在 Chrome、IE 或 Firefox 中运行良好,但在 Safari 中我有一个奇怪的问题。单选按钮内的(单击)事件不起作用,该事件不会被触发。稍后我在按钮中有另一个(单击),它工作正常。该问题发生在 iPhone/iMac 上,因此与设备无关。

该页面只不过是带有一些问题的调查。下面是一个html代码示例:

<div class="col" *ngIf="!valueSelection">
    <h4 for="">1.- Question 1</h4>
    <div class="form-check">
        <input class="form-check-input" type="radio" name="questionRMG1" id="questionRMG1_1" value="answerRMG1_1" [(ngModel)]="valueSelection"
         (click)="onSelect(0.25)">
        <label class="form-check-label" for="questionRMG1_1">Answer a.</label>
    </div>
    <br>
    <div class="form-check">
        <input class="form-check-input" type="radio" name="questionRMG1" id="questionRMG1_2" value="answerRMG1_2" [(ngModel)]="valueSelection"
         (click)="onSelect(0.10)">
        <label class="form-check-label" for="questionRMG1_2">Answer b./label>
    </div>
    <br>
    <div class="form-check">
        <input class="form-check-input" type="radio" name="questionRMG1" id="questionRMG1_3" value="answerRMG1_3" [(ngModel)]="valueSelection"
         (click)="onSelect(0)">
        <label class="form-check-label" for="questionRMG1_3">Answer c. </label>
    </div>
    <br>
    <div class="form-check">
        <input class="form-check-input" type="radio" name="questionRMG1" id="questionRMG1_4" value="answerRMG1_4" [(ngModel)]="valueSelection"
         (click)="onSelect(0,50)">
        <label class="form-check-label" for="questionRMG1_4">Answer d. </label>
    </div>
    <p>
        <ngb-progressbar [value]="0" type="info">0%</ngb-progressbar>
    </p>
</div>

这是正常工作的(点击)代码:

<div class="container">
    <div class="row">
        <div class="col">
            <h4>Text</h4>
            <br>
            <form #mailForm="ngForm">
                <div class="form-group">
                    <label for="exampleInputName1">Name</label>
                    <input type="text" class="form-control" id="exampleInputName1" [(ngModel)]="inputName" name="inputName" placeholder="nombre empresa">
                </div>
                <div class="form-group">
                    <label for="exampleInputEmail1">Mail</label>
                    <input type="email" class="form-control" id="exampleInputEmail1" [(ngModel)]="inputEmail" name="inputEmail" aria-describedby="emailHelp"
                     placeholder="mail">
                    <small id="emailHelp" class="form-text text-muted">Text</small>
                </div>
                <div class="form-group form-check">
                    <input type="checkbox" class="form-check-input" id="exampleCheck1" [(ngModel)]="inputCheck" name="inputCheck">
                    <label class="form-check-label" for="exampleCheck1">Check me out</label>
                </div>
                <button type="submit" class="btn btn-primary" (click)="onSend()" ng-disabled="sending">Enviar</button>
            </form>
        </div>
    </div>
</div>

我真的不知道问题可能是什么。

【问题讨论】:

  • 那么问题显然出在 Safari 上……考虑停止使用 Apple 产品吗?开个玩笑,你能测试一下香草onclick 事件是否有效吗?
  • 对不起,如果我没有正确解释自己,这两个代码片段是同一页面的一部分,调查一次只显示一个问题,当它结束时它会显示带有(点击)的代码工作,所以(点击)在单选按钮之外工作。
  • 这很清楚,我在问是否在单选按钮上触发了 onclick 事件。你能测试一下吗?
  • 当单击单选按钮时,调查会转到下一个问题,效果很好。那是你要求的吗?如果我误解了你,再次抱歉。
  • 不,不是。在 javascript 中,您可以将事件绑定到 HTML 元素:在 Angular 中您编写 (click)="function()",在原生 JS 中它是 onclick="function()"。我要求您测试单击事件是否适用于本机 JavaScript 中的单选按钮。如果他们不这样做,则意味着 Safari 无法将点击事件绑定到按钮。但如果确实如此,则意味着 Angular 在 Safari 和无线电点击事件方面存在问题。我正在尝试找出问题所在,以便为您提供一个合适的答案。

标签: html angular safari


【解决方案1】:

经过更多研究,我发现了一个类似的问题:Angular2 radio button not working in Production

我尝试将环境生产变量更改为 false,现在一切都可以在 Safari 上运行。

这是一个解决方案,但我不明白为什么会发生这种情况,没有意义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    • 1970-01-01
    • 2017-09-15
    • 2018-10-12
    • 1970-01-01
    • 2018-12-18
    • 2019-02-01
    相关资源
    最近更新 更多