HTML表单外观:
<form action="search" id="searchForm" onsubmit="return validateSearch()">
<input type="text" name="byTitle" pattern="[a-zA-Z0-9]+" placeholder="Enter a word from title">
<input type="text" name="byAuthor" pattern="[a-zA-Z]+\s[a-zA-Z]+" placeholder="First-name Last-name"> <!-- pattern="\w+ \w+" -->
<input id="startDate" name="startDate" type="date">
<input id="endDate" name="endDate" type="date">
<input type="submit" name="submit" value="Submit">
</form>
Javscript验证功能:
function validateSearch() {
var byTitle = document.getElementById('searchForm').byTitle.value;
// alert(byTitle);
var byAuthor = document.getElementById('searchForm').byAuthor.value;
// alert(byAuthor);
var startDate = document.getElementById('searchForm').startDate.value;
//alert(startDate);
var endDate = document.getElementById('searchForm').endDate.value;
//alert(endDate);
if(byTitle == byAuthor == startDate == endDate == ""){
alert("Enter at least one search parameter!");
return false;
}
}
现在,如果我将所有表单字段留空/未填写并按提交,则会弹出alert("Enter at least one search parameter!");
消息,但事实并非如此。想要看看每个字段读取后我插入alert
的每个字段的值是什么,它们都是相同的,空字符串/空白。那么,为什么if condition
没有看到它们是相同的空字段?
答案 0 :(得分:4)
您的问题在这里:
<强>错强>
if(byTitle == byAuthor == startDate == endDate == ""){
<强>正确强>
if(byTitle === "" && byAuthor ==="" && startDate ==="" && endDate === ""){
通过仅评估变量,Javascript有一种更简单的方法来评估值是否为空,空字符串或0:
if(!byTitle && !byAuthor && !startDate && !endDate ){
我想分享的另一个建议是使用“===”而不是“==”。
答案 1 :(得分:2)
""
falsy ,因此您只需使用:
if (!byTitle && !byAuthor && !startDate && !endDate) {
...
}
这会在变量(!
)上使用the logical NOT operator将它们转换为布尔值,然后返回相反的值。
答案 2 :(得分:1)
也许你可以这样;
$(function(){
var bytitle = $("input[name=byTitle]").val();
var byAuthor = $("input[name=byAuthor]").val();
var startDate = $("input[name=startDate]").val();
var endDate = $("input[name=endDate]").val();
if( bytitle == '' && byAuthor == '' && startDate == '' && endDate == '')
alert("Enter at least one search parameter!");
});
答案 3 :(得分:0)
您可以在条件中使用AND:
byTitle = "";
byAuthor = "";
startDate ="";
endDate = ""
if(byTitle == "" && byAuthor =="" && startDate =="" && endDate == ""){
alert("Enter at least one search parameter!");
return false;
}
答案 4 :(得分:0)
试试这个:
var ee = byTitle = byAuthor = startDate = endDate="";
if(ee=="null" || ee.length==0 || !ee)
{
alert("all fields must be filled out");
return false;
}