javascript - 如果表单字段未填写,如何不打开窗口?
问题描述
我的表单上有这个提交按钮,带有一个 jQuery 操作,可以根据用户的选择打开一个窗口。但是,如果字段已填满,我只想打开窗口。我有这段代码,我想将它与if
.
$(function() {
$('#chkveg').multiselect({
includeSelectAllOption: true
});
$('#btnget').click(function() {
window.open($('#chkveg').val());
})
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form action="http://formmail.kinghost.net/formmail.cgi" method="POST">
<input name="nome" type="text" class="nome" id="nome" required width="100%" placeholder="Nome:">
<input name="cpf" type="text" class="cpf" id="cpf" placeholder="CPF:">
<div style="clear:both"></div><br/>
<input name="nascimento" type="text" class="nascimento" id="nascimento" placeholder="Data de nascimento:">
<select id="chkveg">
<option value="https://pag.ae/7ULKPL7TH">Associados Ancord + C.Dados = R$700,00</option>
<option value="https://pag.ae/7ULKQ8Zm2">Associados Ancord = R$800,00</option>
<option value="https://pag.ae/7ULKQLB9m">Associados Entidades Apoiadoras + C.Dados = R$800,00</option>
</select>
<input id="btnget" class="submit-btn" type="submit" value="INSCREVER-SE">
</form>
举个例子:
IF (#FORM).REQUIRED = TRUE {
(#BUTTON).WINDOWOPEN
}
谢谢
解决方案
因为您使用提交按钮return false
,所以如果您不想做任何事情,您将需要这样做。在此之前,您还需要检查您的必填字段是否为空。(即$(your field).val() === ""
它是空的,如果你需要的话,然后调用该window.open()
函数。注意:您可以合并多个字段以进行检查,即:$(".your_field1, .your_field2, .your_field3").val() === ""
但是这是一个 OR 操作。
一种可能的解决方案:
$(function() {
$('#btnget').click(function() {
let isEmpty = false;
$('#data_form input,textarea,select').filter(':visible').each(function(i) {
if ($(this).val() === "") {
isEmpty = true;
return false;
}
});
if (isEmpty) {
return false;
}
window.open($('#chkveg').val());
})
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form id="data_form" action="http://formmail.kinghost.net/formmail.cgi" method="POST">
<input name="nome" type="text" class="nome" id="nome" required width="100%" placeholder="Nome:">
<input name="cpf" type="text" class="cpf" id="cpf" placeholder="CPF:">
<div style="clear:both"></div><br/>
<input name="nascimento" type="text" class="nascimento" id="nascimento" placeholder="Data de nascimento:">
<select id="chkveg">
<option value="https://pag.ae/7ULKPL7TH">Associados Ancord + C.Dados = R$700,00</option>
<option value="https://pag.ae/7ULKQ8Zm2">Associados Ancord = R$800,00</option>
<option value="https://pag.ae/7ULKQLB9m">Associados Entidades Apoiadoras + C.Dados = R$800,00</option>
</select>
<input id="btnget" class="submit-btn" type="submit" value="INSCREVER-SE">
</form>
如果您只想要必填字段,请使用filter('[required]:visible')
而不是filter(':visible')
.
推荐阅读
- python - 如何解决 Mongokit TypeError: __init__() got an unexpected keyword argument 'collection' 错误
- github-package-registry - 如何从 Github 包注册表中删除/删除/取消链接/取消版本包
- mysql - MySQL 5.7:替代 Oracle 的“with temp as”
- vlookup - VLOOKUP 计算具有两个值的行数
- perl - 如何将 JSON HTTP 响应转换为哈希?
- xamarin.forms - Xamarin Forms:CollectionView 在 ios 中不起作用
- swift - AVFoundation AVAudioSourceNode 格式似乎是一种原生格式,与 AVAudioEngine 的其余部分不同
- javascript - 如何在与模板引擎协同工作的 React DOM Server 中使用 renderToNodeStream?
- typescript - 空的 Promise 拒绝是否需要显式键入为 VOID?
- java - 使用 Spring Boot 进行 Jackson 多态反序列化 JSON解析错误:对象条目内/之间的意外输入结束