![](/img/trans.png)
[英]How do I make sure null and empty string fields arent added to my documents in firestore Reactjs
[英]How do I check to make sure form fields are not empty strings?
我正在尝试获取我的validateForm()方法以确保电子邮件有效(已完成),并且还确保“名称”和“评论”字段不为空。 出于某种原因,我无法精简第二部分,需要一些帮助。 这是我当前的代码。
<script type="text/javascript">
<!--
function validateForm() {
var x = document.forms["myForm"]["email"].value;
var x = document.forms["myForm"]["name"].value;
var atpos = x.indexOf("@");
var dotpos = x.lastIndexOf(".");
if (atpos < 1 || dotpos < atpos + 2 || dotpos + 2 >= x.length) {
alert("Not a valid e-mail address");
return false;
}
}
}
if (x == null || x == "") {
alert("Empty Fields");
return false;
}
}
// -->
</script>
以及形式:
<form name="myForm" action="http://webdevfoundations.net/scripts/formdemo.asp" onsubmit="return validateForm()" method="POST">
Your name: <br>
<input type="text" name="name" ><br>
<br>
Your email: <br>
<input type="text" name="email"><br>
<br>
Your comments: <br>
<textarea name="comments" rows="15" cols="50"></textarea><br><br>
<input type="submit" value="Submit">
</form>
您正在将两个表单字段都分配给变量x
为什么在字段name
和email
使用相同的变量。 这没有道理。
您的代码中还有一个语法错误,即您在检查第二个条件之前加了一个额外的}
。 因此它使该条件超出了该功能
function validateForm() {
var x = document.forms["myForm"]["email"].value;
var y = document.forms["myForm"]["name"].value;
var atpos = x.indexOf("@");
var dotpos = x.lastIndexOf(".");
if (atpos < 1 || dotpos < atpos + 2 || dotpos + 2 >= x.length) {
alert("Not a valid e-mail address");
return false;
}
if (x == "" || y == "") {
alert("Empty Fields");
return false;
}
}
您应该这样尝试:
function validateForm(){
var x=document.forms["myForm"].getElementsByName('email').value;
var y=document.forms["myForm"].getElementsByName('name').value;
var atpos=x.indexOf("@");
var dotpos=x.lastIndexOf(".");
if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length){
alert("Not a valid e-mail address");
return false;
}
if (y==null || y==""){
alert("Empty Fields");
return false;
}
}
您应该选择以下几点来记住上面的代码
(1)首先要对“空字段”进行验证,然后再进行电子邮件检查。 (2)根据代码,您的Empty字段逻辑不是validateForm()的一部分(可能是拼写错误),因此当validationForm()方法将被调用时,该逻辑将不会执行(3)您应编写return true在方法validateForm()的末尾(4)使用不同的字段检查变量名称
通过以上几点,将有助于解决您的问题。 :)
首先,您的代码中存在语法错误。 似乎有两个多余的花括号。 然后将两个字段都分配给x,只有name字段获得其值。 另外,最好先检查电子邮件字段是否为空,然后再对其进行操作。 最后,我认为您的电子邮件支票不正确。 例如:xxx@a.info。 因此,您可以尝试:
function checkEmail(aEmail){
var pattern=//w+([-+.']/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*/;
var objExp=new RegExp(pattern);
if(objExp.test(str)==true){
return true;
}else{
return false;
}
}
function validateForm() {
var x = document.forms["myForm"]["email"].value;
var y = document.forms["myForm"]["name"].value;
if (x == "" || y == "") {
alert("Empty Fields");
return false;
}
if (!checkEmail(y)) {
alert("Not a valid email");
return false;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.