[英]How can I prevent material-ui Select options to be opened when clicking on particular area of the selected option
[英]How can I prevent submit if selected options are empty?
如果任何选定的菜单为空,我试图阻止使用 Onclick 事件(使用 javascript)提交。 也许显示警报。 是否可以?
<select name="form1" form="my_form">
<option value="Option 1">Option 1</option>
<option value="Option 2">Option 2</option>
</select>
<select name="form2" form="my_form">
<option value="Option 1">Option 1</option>
<option value="Option 2">Option 2</option>
</select>
<form id="my_form" method="post" action="selections.php">
<input type="submit" value="Send">
</form>
最方便的方法是使用由epascarello提到的浏览器处理的 HTML 表单验证( required
)
不幸的是,您的选择将第一个选项作为默认选项。 您可以只添加一个没有值的占位符选项。 这将防止在没有选择的情况下提交表单。
如果您不想显示它,您可以为用户隐藏此选项。 示例中的第二个选择。
在评论中添加了第三个输入来回答您的问题。 没有值意味着它将<option>
标签的内容作为默认值。 只有在此选项中没有文本时,它才会起作用。
<form id="my_form"> <select required name="form1" form="my_form"> <option value>Placeholder</option> <option value="Option 1">Option 1</option> <option value="Option 2">Option 2</option> </select> <select required name="form2" form="my_form"> <option hidden disabled selected value>Choose an option</option> <option value="Option 1">Option 1</option> <option value="Option 2">Option 2</option> </select> <select required name="form3" form="my_form"> <option>I'm the value if none set</option> <option value="Option 1">Option 1</option> <option value="Option 2">Option 2</option> </select> <input type="submit" value="Send"> </form>
我会为您的提交按钮使用一个 id:
<input type="submit" value="Send" id="submitButton" disabled>
之后只需为您的选项创建一个函数:
function onItemSelected() {
var selectedItem1 = document.getElementByName("form1").selectedIndex;
var selectedItem2 = document.getElementByName("form2").selectedIndex;
if (selectedItem1 && selectedItem2) {
document.getElementById('submitButton').disabled = false;
} else {
document.getElementById('submitButton').disabled = true;
}
}
您必须在每个选择输入中调用 onItemSelected: 例如:
<select name="form2" form="my_form" (onchange)="onItemSelected()">
是的,如果菜单为空,您可以使用 select 标签中的 required 属性阻止提交表单。
您的选择输入不在您的“表单”标签中是否正常? 在哪种情况下它们会是空的? 因为默认选择了“选项 1”
var selectElts = document.getElementsByTagName('select');
var formElt = document.getElementById('my_form');
formElt.addEventListener('submit', function(e) {
// stop the form submission
e.preventDefault();
var error = 0;
// Check all select menus
for (var i = 0; i < selectElts.length; i++) {
// Check if current input's value is empty
if (selectElts[i].value.trim() === '') {
error = error + 1;
alert(selectElts[i].name + ' is empty');
}
}
// if there are no errors, then we submit the form
if (error === 0) {
formElt.submit();
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.