检查是否在特定 div 中填写了所有必填字段
Check if all required fields are filled in a specific div
我有一些表单字段是从数据库动态生成的。有输入、复选框、单选按钮、文本区域和 select。所有字段都在 ID dynamic-form-fields
的父 div 中。某些字段具有 required
属性。
这是一个多步骤表单,因此每个 "step/page" 都需要在继续下一步之前进行验证。所以它没有提交表单。
如何检查 div dynamic-form-fields
中的所有必填字段是否已填写?
这是我的 HTML 代码的样子:
<input type="text" name="dff[]" placeholder="Name" required>
<input type="text" name="dff[]" placeholder="Date of Birth">
<input type="text" name="dff[]" placeholder="Email" required>
<input type="radio" name="gender" value="Male" required>
<input type="radio" name="gender" value="Female" required>
<select name="pet">
<option value="dog">Dog</option>
<option value="cat">Cat</option>
<option value="bird">Bird</option>
</select>
<button id="check">Check</button>
<script>
document.getElementById("check").onclick = function () {
if() {
alert('error please fill all fields!');
}
};
</script>
如您所见,有些字段是必需的,有些则不是。每次都不一样,所以解决方案必须是动态的。还有不同类型的输入,例如 select、单选、复选框、文本等...我如何确保 [=39] 中的每个“required”字段=] ID dynamic-form-fields
已填?
我试过的:
可能是这样的,但是如何在 div ID dynamic-form-fields
下获取每种类型的输入(文本、单选、复选框、select 等...)?
$('#dynamic-form-fields input:required').each(function() {
if ($(this).val() === '')
alert('error please fill all fields!');
});
document.getElementById("check").onclick = function() {
let allAreFilled = true;
document.getElementById("myForm").querySelectorAll("[required]").forEach(function(i) {
if (!allAreFilled) return;
if (i.type === "radio") {
let radioValueCheck = false;
document.getElementById("myForm").querySelectorAll(`[name=${i.name}]`).forEach(function(r) {
if (r.checked) radioValueCheck = true;
})
allAreFilled = radioValueCheck;
return;
}
if (!i.value) { allAreFilled = false; return; }
})
if (!allAreFilled) {
alert('Fill all the fields');
}
};
<div id="myForm">
<input type="text" name="dff[]" placeholder="Name" required>
<input type="text" name="dff[]" placeholder="Date of Birth">
<input type="text" name="dff[]" placeholder="Email" required>
<input type="radio" name="gender" value="Male" required>
<input type="radio" name="gender" value="Female" required>
<select name="pet" required>
<option value="">Select a pet</option>
<option value="dog">Dog</option>
<option value="cat">Cat</option>
<option value="bird">Bird</option>
</select>
</div>
<button id="check">Check</button>
您可以检查 required
属性是否可用,
$('#dynamic-form-fields').each(function() {
var hasRequired = $(this).attr('required');
if (typeof hasRequired !== "undefined" && hasRequired !== false) {
// This is required inputs.
}
}
参考:Link
您可以根据输入类型进行单独检查,请考虑以下事项:
var isEmpty = false;
$("#check").on('click', function() {
isEmpty = false
$('input[type=text]:required').each(function() {
if ($(this).val() === '')
isEmpty = true;
});
var radioSelected = false;
//$('input[name=gender]:required').each(function() {
$('input[type=radio]:required').each(function() {
if ($(this).is(':checked'))
radioSelected = true;
});
if (!radioSelected)
isEmpty = true;
if ($("[name=pet]").val() == "")
isEmpty = true;
//if (!$(".cb").is(":checked"))
// isEmpty = true;
if (isEmpty)
alert('error please fill all fields!');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" name="dff[]" placeholder="Name" required>
<input type="text" name="dff[]" placeholder="Date of Birth">
<input type="text" name="dff[]" placeholder="Email" required>
<input type="radio" name="gender" value="Male" required>
<input type="radio" name="gender" value="Female" required>
<select name="pet" required>
<option value="dog">Dog</option>
<option value="cat">Cat</option>
<option value="bird">Bird</option>
</select>
<!--<input type="checkbox" class="cb" required />-->
<button id="check">Check</button>
您可以使用 :invalid
来执行此操作。
演示:
$('#check').on("click", function(){
let valid = true;
$('[required]').each(function() {
if ($(this).is(':invalid') || !$(this).val()) valid = false;
})
if (!valid) alert("error please fill all fields!");
else alert('valid');
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" name="dff[]" placeholder="Name" required>
<input type="text" name="dff[]" placeholder="Date of Birth">
<input type="text" name="dff[]" placeholder="Email" required>
<input type="radio" name="gender" value="Male" required>
<input type="radio" name="gender" value="Female" required>
<select name="pet" required>
<option selected disabled>Select a pet</option>
<option value="dog">Dog</option>
<option value="cat">Cat</option>
<option value="bird">Bird</option>
</select>
<button id="check">Check</button>
我有一些表单字段是从数据库动态生成的。有输入、复选框、单选按钮、文本区域和 select。所有字段都在 ID dynamic-form-fields
的父 div 中。某些字段具有 required
属性。
这是一个多步骤表单,因此每个 "step/page" 都需要在继续下一步之前进行验证。所以它没有提交表单。
如何检查 div dynamic-form-fields
中的所有必填字段是否已填写?
这是我的 HTML 代码的样子:
<input type="text" name="dff[]" placeholder="Name" required>
<input type="text" name="dff[]" placeholder="Date of Birth">
<input type="text" name="dff[]" placeholder="Email" required>
<input type="radio" name="gender" value="Male" required>
<input type="radio" name="gender" value="Female" required>
<select name="pet">
<option value="dog">Dog</option>
<option value="cat">Cat</option>
<option value="bird">Bird</option>
</select>
<button id="check">Check</button>
<script>
document.getElementById("check").onclick = function () {
if() {
alert('error please fill all fields!');
}
};
</script>
如您所见,有些字段是必需的,有些则不是。每次都不一样,所以解决方案必须是动态的。还有不同类型的输入,例如 select、单选、复选框、文本等...我如何确保 [=39] 中的每个“required”字段=] ID dynamic-form-fields
已填?
我试过的:
可能是这样的,但是如何在 div ID dynamic-form-fields
下获取每种类型的输入(文本、单选、复选框、select 等...)?
$('#dynamic-form-fields input:required').each(function() {
if ($(this).val() === '')
alert('error please fill all fields!');
});
document.getElementById("check").onclick = function() {
let allAreFilled = true;
document.getElementById("myForm").querySelectorAll("[required]").forEach(function(i) {
if (!allAreFilled) return;
if (i.type === "radio") {
let radioValueCheck = false;
document.getElementById("myForm").querySelectorAll(`[name=${i.name}]`).forEach(function(r) {
if (r.checked) radioValueCheck = true;
})
allAreFilled = radioValueCheck;
return;
}
if (!i.value) { allAreFilled = false; return; }
})
if (!allAreFilled) {
alert('Fill all the fields');
}
};
<div id="myForm">
<input type="text" name="dff[]" placeholder="Name" required>
<input type="text" name="dff[]" placeholder="Date of Birth">
<input type="text" name="dff[]" placeholder="Email" required>
<input type="radio" name="gender" value="Male" required>
<input type="radio" name="gender" value="Female" required>
<select name="pet" required>
<option value="">Select a pet</option>
<option value="dog">Dog</option>
<option value="cat">Cat</option>
<option value="bird">Bird</option>
</select>
</div>
<button id="check">Check</button>
您可以检查 required
属性是否可用,
$('#dynamic-form-fields').each(function() {
var hasRequired = $(this).attr('required');
if (typeof hasRequired !== "undefined" && hasRequired !== false) {
// This is required inputs.
}
}
参考:Link
您可以根据输入类型进行单独检查,请考虑以下事项:
var isEmpty = false;
$("#check").on('click', function() {
isEmpty = false
$('input[type=text]:required').each(function() {
if ($(this).val() === '')
isEmpty = true;
});
var radioSelected = false;
//$('input[name=gender]:required').each(function() {
$('input[type=radio]:required').each(function() {
if ($(this).is(':checked'))
radioSelected = true;
});
if (!radioSelected)
isEmpty = true;
if ($("[name=pet]").val() == "")
isEmpty = true;
//if (!$(".cb").is(":checked"))
// isEmpty = true;
if (isEmpty)
alert('error please fill all fields!');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" name="dff[]" placeholder="Name" required>
<input type="text" name="dff[]" placeholder="Date of Birth">
<input type="text" name="dff[]" placeholder="Email" required>
<input type="radio" name="gender" value="Male" required>
<input type="radio" name="gender" value="Female" required>
<select name="pet" required>
<option value="dog">Dog</option>
<option value="cat">Cat</option>
<option value="bird">Bird</option>
</select>
<!--<input type="checkbox" class="cb" required />-->
<button id="check">Check</button>
您可以使用 :invalid
来执行此操作。
演示:
$('#check').on("click", function(){
let valid = true;
$('[required]').each(function() {
if ($(this).is(':invalid') || !$(this).val()) valid = false;
})
if (!valid) alert("error please fill all fields!");
else alert('valid');
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" name="dff[]" placeholder="Name" required>
<input type="text" name="dff[]" placeholder="Date of Birth">
<input type="text" name="dff[]" placeholder="Email" required>
<input type="radio" name="gender" value="Male" required>
<input type="radio" name="gender" value="Female" required>
<select name="pet" required>
<option selected disabled>Select a pet</option>
<option value="dog">Dog</option>
<option value="cat">Cat</option>
<option value="bird">Bird</option>
</select>
<button id="check">Check</button>