【发布时间】:2021-05-23 19:41:56
【问题描述】:
很遗憾,我有一些字段不适合 <form> 标记。我希望在加载时禁用表单,直到用户至少在多个字段上输入,然后按钮才会启用。
现在我有两个问题。其中之一是,对于有效的 jquery 代码,它只能在函数的一个字段上工作。如果我想要多个字段作为一个函数怎么办.....有没有办法做到这一点?另一个问题是对于熟悉 Bootstrap 4 的人来说,“禁用”功能似乎存在问题。即使我将disabled 放入button 或a 类中,它仍然是可点击的。即使我尝试按照documentation 中的建议添加tabindex="-1",但无济于事。
这是 HTML(因为杂乱,不想在其中使用引导程序):
<p>User ID</p>
<input class="form-control" id="UserIDField" aria-label="Username" aria-describedby="basic-addon1" style="width: 146px;" type="text" required>
<p>Message</p>
<textarea class="form-control" id="MessageField" rows="5" data-toggle="tooltip" data-placement="top" data-trigger="manual" title="Message is required!" required></textarea>
<p>Select date</p>
<input id="DatePicker" type="text" placeholder="Click to select" class="form-control" aria-describedby="basic-addon3" aria-label="Date" data-zdp_readonly_element="false" style="position: relative; float: none; top: auto; right: auto; bottom: auto; left: auto; margin: 0px; padding-right: 40px;" required>
<button type="button" id="ScheduleButton" tabindex="-1" class="btn btn-primary btn-lg btn-block disabled" data-toggle="tooltip" aria-disabled="true" data-placement="top" data-trigger="manual" title="Your message is sent!"><i class="fas fa-inbox"></i> Schedule to Send Message</button>
(注意按钮idScheduleButton是提交表单的按钮)
这是 render.js 文件中的 javascript/jquery。
$('#MessageField').on('input change', function () {
if ($(this).val() != '') {
$('#ScheduleButton').removeClass('disabled');
$('#ModalButton').removeClass('disabled');
$('#ScheduleButton').prop('disabled', false);
$('#ModalButton').prop('disabled', false);
}
else {
$('#ScheduleButton').prop('disabled', true);
$('#ModalButton').prop('disabled', true);
}
});
我不能像在 Electron 中那样使用 document.SOMETHING(除非我在 HTML 文件中添加它。
【问题讨论】:
-
你可以用
$("form :input").change(function() { .. });处理表单的变化,任何输入的每次变化都会调用回调。 -
这可能会有所帮助,但这是否适用于
<form>标记中的 all 输入字段?如果有另一个字段与不同的提交按钮相关联,那么几乎所有具有输入字段的东西都会失控吗? -
1) 最简单的方法是自己测试;) 但它应该适用于表单标签中的 all 输入字段,显然您需要将选择器更改为仅匹配您的表单因为
$("form :input")匹配页面上的所有表单。 2) 在回调函数中,您可以选择对每个输入字段执行的操作。因此,如果它是与另一个提交按钮相关联的字段,则什么也不做。
标签: javascript jquery node.js bootstrap-4 electron