提问人:Eligio Cristantielli 提问时间:10/22/2023 最后编辑:QuentinEligio Cristantielli 更新时间:10/22/2023 访问量:44
为什么必需的属性在表单上不起作用?
Why the required attribute doesn't work on form?
问:
我正在创建此表单,但是当我单击“创建任务”按钮时,所需的属性被忽略了。
我正在使用 innerHTML 创建表单,并且:
<form id="task-form">
<label for="task-title">Title:</label>
<input type="text" id="task-title" name="task-title" required>
<label for="task-date">Due date:</label>
<input type="date" id="task-date" name="task-date" required>
<label for="task-description">Description:</label>
<textarea name="task-description" id="task-description" required></textarea>
<label for="checkbox">Add to a project?</label>
<input type="checkbox" name="checkbox" id="checkbox">
<label for="task-priority">Priority:</label>
<select name="task-priority" id="task-priority" required>
<option value="Low">Low</option>
<option value="Medium">Medium</option>
<option value="High">High</option>
</select>
<button type="submit" id="create-task-btn">Create Task</button>
</form>
控制台还给我一个警告说: “表单提交已取消,因为表单未连接”
答:
-1赞
Hezy Ziv
10/22/2023
#1
由于您是动态添加表单,因此您需要创建侦听器
// Create the form element and set its properties
const form = document.createElement('form');
form.id = 'task-form';
// Create and append the form's content
form.innerHTML = `
<label for="task-title">Title:</label>
<input type="text" id="task-title" name="task-title" required>
<label for="task-date">Due date:</label>
<input type="date" id="task-date" name="task-date" required>
<label for="task-description">Description:</label>
<textarea name="task-description" id="task-description" required></textarea>
<label for="checkbox">Add to a project?</label>
<input type="checkbox" name="checkbox" id="checkbox">
<label for="task-priority">Priority:</label>
<select name="task-priority" id="task-priority" required>
<option value="Low">Low</option>
<option value="Medium">Medium</option>
<option value="High">High</option>
</select>
<button type="submit" id="create-task-btn">Create Task</button>
`;
// Append the form to the document
const formContainer = document.getElementById('form-container');
formContainer.appendChild(form);
// Add an event listener for form submission
form.addEventListener('submit', function (event) {
event.preventDefault(); // Prevent the default form submission behavior
// Your form submission logic here
});
<div id="form-container"></div>
评论
0赞
Quentin
10/22/2023
JS 生成的表单照常工作。它们不需要提交事件侦听器即可运行。
0赞
Hezy Ziv
10/22/2023
我不同意,JS 生成的表单只有在使用处理表单提交的 JavaScript 框架或库(例如 angular)时才能正常工作。在发表评论之前检查代码,请!!
1赞
Quentin
10/23/2023
分歧没有意义。这是事实,而不是意见。你根本就错了。我用香草JS构建了表单,没有事件侦听器,它们工作正常。
0赞
Hezy Ziv
10/23/2023
不确定你的香草JS,但是在这种情况下你错了,这不是意见,而是事实。
0赞
Quentin
10/23/2023
证明你错了是微不足道的。从代码中删除 submit 事件处理程序。必需的属性仍将阻止表单提交。
评论