javascript - 如果用户没有输入所需信息,我希望他/她无法前进到下一个屏幕

标签 javascript html

该函数接收用户的用户名和密码。如果其中一个留空,则不会发生任何事情,并且如果他们单击“开始”按钮,它们将不会链接到 google.ca。如果他们在必填部分提交,那么他们将被定向到 google.ca。出于某种原因,如果有任何文本框未填写并按下“开始”按钮,当我希望它只停留在该页面上直到用户填写文本框时,它会将我带到 404 错误页面。是什么导致了这个问题?这是 HTML 文件。

<form action="index.php" method="get" id="form" onsubmit="return go(document.getElementById('username'), document.getElementById('password'))">
    <table>
        <tr><td>Username: <input type="text" name="username" maxlength="16" id="username" onKeyUp="updateLength('username', 'usernameLength')" onblur="checkTextField(this);"/> <span id="usernameLength"></span></td></tr>     
        <tr><td>Password: <input type="password" name="password" maxlength="50" id="password" onKeyUp="updateLength('password', 'passwordLength')"> <span id="passwordLength" onblur="checkTextField(this);"></span></td></tr>
        <tr><td><input type="submit" value="Go" id="goButton" onclick="go(username, password)"/></td></tr>
    </table>
</form>

这是js文件

function loginFunction() {
    var url = "login.html";
    window.open(url);
}

function createAccountFunction() {
    var url2 = "createAccount.html";
    window.open(url2);
}

function go(username, password) {
    if (username != null && password != null) {
        var url = "https://www.google.ca/";
        window.open(url);
    }
}

function updateLength(field, output) {
    var curr_length = document.getElementById(field).value.length;
    var field_mLen = document.getElementById(field).maxLength;
    document.getElementById(output).innerHTML = curr_length + '/' +     field_mLen;
}

function checkTextField(field) {
    if (field.value == '')
        alert("Field is empty");
}

最佳答案

您没有停止 onsubmit 的默认事件。您可以通过将 go 函数更改为:

function go(username, password) {
    return function(event) {
        event.preventDefault();

        if (username != null && password != null) {
            var url = "https://www.google.ca/";
            window.open(url);
        }
    }
}

您也不需要 HTML 中的 return。只需调用函数即可。

关于javascript - 如果用户没有输入所需信息,我希望他/她无法前进到下一个屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35248302/

相关文章:

javascript - Nestjs Swagger UnhandledPromiseRejectionWarning : TypeError: Cannot destructure property `prototype` of 'undefined' or 'null'

javascript - 尝试从货币字符串中删除美元符号以将字符串转换为整数

html - 如何在联系表 7 中输入后自动添加美元

javascript - 从左侧jquery滑动动画条位置

javascript - 将视频 blob 播放到 Canvas 中

javascript - 如何制作与横幅背景相同的固定标题?

javascript - 如何在事件掉落中给出条件

javascript - 减少用于生产的 node_modules 的大小

css - 定价表调整大小感觉就像使用 html5 和/或 css 的 mac dock

php - 为什么电子邮件值在 mysql 数据库中存储为 %email ?