同时验证表单中的多个字段

问题描述 投票:0回答:6

我正在编写

PreSaveAction()
的JavaScript表单验证,如下所示:

function PreSaveAction() {
  var number1 = getTagFromIdentifierAndTitle("INPUT", "TextField", "Quantity");
  //var ddl1 = getTagFromIdentifierAndTitle("select", "DropDownChoice", "Is Product Completed"); 
  var myvar = getTagFromIdentifierAndTitle("TextArea", "TextField", "Description");

  //if (dropdown1.value == "Yes" && date1.value == "")  
  if (number1.value == "" || myvar.value === "") {
    alert("Please fill all the Required Fields");
    return false; // Cancel the item save process  
  }

  if (confirm("Do you want to continue with this information?") == true) {
    alert("Successfully Submitted");
    return true; // OK to proceed with the save item 

  }

  return false;
}

以及

getTagFromIdentifierAndTitle
函数的脚本

function getTagFromIdentifierAndTitle(tagName, identifier, title) {
  var len = identifier.length;
  var tags = document.getElementsByTagName(tagName);

  for (var i = 0; i < tags.length; i++) {
    var tempString = tags[i].id;
    if (tags[i].title == title && (identifier == "" || tempString.indexOf(identifier) == tempString.length - len)) {
      return tags[i];
    }
  }
  return null;
}

我在上面观察到的是,它没有同时验证我使用 and 运算符的两个字段。

我在脚本中做错了什么吗?

请帮我解决这个问题。

提前致谢

javascript forms validation
6个回答
3
投票

通常使用“===”而不是“==”更好,因为这也包括类型检查。


2
投票

您有多个具有相同 ID 的元素,这会导致您的函数仅返回第一个元素。

每个元素都有唯一的 ID,然后将第二行更改为:

var myvar = getTagFromIdentifierAndTitle("TextArea", "txtDescription", "Description");

假设您现在有

id="txtDescription"
到文本区域元素。

您也可以将相同的 class 分配给多个元素,但看不出有什么理由不能给出不同的 ID。


1
投票

如果您希望测试在任一为空时失败,则需要 OR 属性:||

这将确保它们都非空。


0
投票
var number1 = getTagFromIdentifierAndTitle("INPUT","TextField","Quantity");  (TextBox)

var Desc1 = getTagFromIdentifierAndTitle("TextArea","TextField","Description");  (MultiLine)


if (number1.value == "" || Desc1.value == "") //Changed here
    {  
        alert("Please fill all the Required Fields");  
        return false; // Cancel the item save process  
    }  
return true;

0
投票
if (number1.value == "" || Desc1.value == "") 
    {  
        alert("Please fill all the Required Fields");  
        return false; // Cancel the item save process  
    }  
return true;

您想在此处使用或。因为你想同时设置两个字段,对吗?

if (number1.value != "" && Desc1.value != "")

也是可以的。

要正确验证号码:

number1.length && !isNaN(Number(number1.value)); //Number("") returns 0, not NaN

-1
投票

Javascript表单验证非常简单,你可以查看下面的网址

https://simplifyscript.com/tutorials/form-validation-html-and-javascript/

© www.soinside.com 2019 - 2024. All rights reserved.