您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

必需的属性在Safari浏览器中不起作用

必需的属性在Safari浏览器中不起作用

Safari(自2017年3月26日起最新版本10.1)不支持属性,您需要使用JavaScript。

页面包含一个hacky解决方案,该解决方案应添加所需的功能

HTML:

<form action="" method="post" id="formID">
    <label>Your name: <input required></label><br>
    <label>Your age: <input required></label><br>
    <input type="submit">
</form>

JavaScript:

var form = document.getElementById('formID'); // form has to have ID: <form id="formID">
form.noValidate = true;
form.addEventListener('submit', function(event) { // listen for form submitting
        if (!event.target.checkValidity()) {
            event.preventDefault(); // dismiss the default functionality
            alert('Please, fill the form'); // error message
        }
    }, false);

您可以用不太丑陋的警告代替警报,例如显示错误消息的DIV:

document.getElementById('errorMessageDiv').classList.remove("hidden");

在CSS中:

.hidden {
    display: none;
}

并在HTML中:

<div id="errorMessageDiv" class="hidden">Please, fill the form.</div>

这种方法的唯一缺点是它不能处理需要填写的确切输入。它将需要一个循环遍历表单中的所有输入并检查值(更好的是,检查“必需”属性的存在)。

循环看起来像这样:

var elems = form.querySelectorAll("input,textarea,select");
for (var i = 0; i < elems.length; i++) {
    if (elems[i].required && elems[i].value.length === 0) {
        alert('Please, fill the form'); // error message
        break; // show error message only once
    }
}
其他 2022/1/1 18:15:15 有476人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶