JavaScript函数运行两次?

Omn*_*Owl 8 html javascript asp.net-mvc events function

我有点困惑.

我有一个用户可以单击的复选框,用于确定我的页面上的私人电话号码是对所有人还是仅对管理员可见.当单击该框时,我想确保您首先被允许首先打印它的状态仅用于测试目的.当我运行此功能时,它会运行两次.

我在其他地方读到这是因为Callbacks?但是我回复假,所以这不应该是这样的吗?

我不是一个JavaScript向导,所以我仍然不了解JavaScript及其与ASP的交互.

/**
* Used to Check whether a Private Phone number should be hidden or shown.
*/
function ValidateHidePrivate() {
    if (scope["pickeduser"] != scope["credential"]) {
        alert("Not allowed");
        return false;
    } else {
        alert(document.getElementById("HidePrivate").checked);
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

和HTML:

<label for="HidePrivate" onclick="ValidateHidePrivate()">
    <input type="checkbox" name="HidePrivate" id="HidePrivate" value="no" />
    Hide my Private Phone Number
</label>
Run Code Online (Sandbox Code Playgroud)

有帮助吗?

Mih*_*nut 7

这是因为<label>带有for属性的a 会引发与单击时关联click<input type="checkbox">元素事件.

你应该绑定click事件处理程序input,而不是绑定label.

function ValidateHidePrivate() {
      alert();
}
Run Code Online (Sandbox Code Playgroud)
<label for="HidePrivate" >
    <input type="checkbox" name="HidePrivate" onclick="ValidateHidePrivate()" id="HidePrivate" value="no" />
    Hide my Private Phone Number
</label>
Run Code Online (Sandbox Code Playgroud)