javascript - 这个表单验证有什么问题?

标签 javascript

基本上,如果我的表单中的七个文本框之一为空,我想做的是提醒相同的消息。我一直在玩弄它,但现在我开始感到恼火;帮助!有时我会收到 function validepiste() is not defined 错误,有时我不会收到错误,但即使所有的盒子里都有东西,也会有警告。我认为错误可能是由于错误使用了 || (或)运算符,或长度位。这是函数(在 head 标签内):

<script type="text/javascript">
function validatepiste()
{
// all form fields must be filled in
var a= document.piste.nom.length;
var b= document.piste.email.length;
var c= document.piste.numtel.length;
var d= document.piste.adresse.length;
var e= document.piste.ville.length;
var f= document.piste.length;
var g= document.piste.travaux.length;
if (a||b||c||d||e||f||g==0){
  alert("Vous devez remplir toutes les cases.");
  return false;
  }
return true
} 
</script>

以及对 html 中的函数的调用:

<input type="submit" name="Submit" value="Envoyer" onClick="return validatepiste()"/>

谢谢!

最佳答案

我看到您的代码有两个问题。

第一个问题

看来您正在尝试直接访问表单元素(不存在)上的 length 属性。您真正想要做的是访问表单值的 length。所以不是这个:

var a= document.piste.nom.length;

这样做:

var a= document.piste.nom.value.length;

起初我没有看到这一点,但@Napster 在他的回答中提到了这一点。所以感谢他。

第二个问题

你的 if 语句有一些错误的逻辑。请尝试以下操作。

if (a==0||b==0||c==0||d==0||e==0||f==0||g==0) { ... }

你原来的表达是在问以下...

如果 a 为真, 或者 b 是真实的, 或者 c 是真实的, 或者 d 是真实的, 或者 e 是真实的, 或者 f 是真实的, 或者 g 等于 0 然后显示警报。

使用现有代码不会触发警报的唯一情况是,如果所有字段都为空白,g 除外。

您可以阅读 article about what truthy means如果你愿意。

关于javascript - 这个表单验证有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5177270/

相关文章:

Javascript 的 future 会完成吗?

javascript - 通过javascript检测ipad/iphone webview

javascript - 如何设置 summernote 设置图像始终全宽

javascript - 将时钟上弦至当前时间

javascript - 打包一个 npm 模块,以便它可以在前端工作(例如使用 create-react-app) `You may need an appropriate loader to handle this file type`

javascript - 带淡入淡出的内联 block

javascript - 理解 setInterval(function() {...}, time)

javascript - FireFox 不要取消从 jQuery 脚本提交的表单

javascript - jQuery:单击时切换功能,因为切换()不再可用

javascript - 如何使用 javascript 为 SVG 文本元素提供固定的高度和宽度?