验证多个提示具有值

时间:2017-03-23 06:30:49

标签: javascript validation alert

  1. 我正在尝试编写一个简单的测试,我在单独的提示中询问姓名和年龄。我想验证用户确实在两个提示中都添加了一个值。 在没有重复代码的情况下进行此验证的最佳方法是什么? 当我单击“确定”没有值时,它不会要求我添加值

    function showInfo() {
    //Asking for name in a prompt
    var name = prompt("Name: ","");
    //Checking if it is null or empty
    if (name == null || ""){alert("Please enter your name");}
    //Same for age
    var age = prompt("Age: ","");
    if (age == null || ""){alert("Please enter your age.");}
    }
    
  2. 另外,注意到“null”是检查“取消”按钮,但是我能够测试一下如果单击“取消”,然后再次单击“取消”,它就不会要求输入值。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

如果条件错误,你就是。你应该使用

if (name === null || name === "") {
  //you code here
}

如果你想继续展示prompt,除非用户输入以下代码,否则代码将有效:

function showInfo() {

while(1) {
 //Asking for name in a prompt
 var name = prompt("Name: ","");
 if (name === null || name === ""){alert("Please enter your name");}
 else break;
}

console.log("Name= "+name);


while(1) {
 //Same for age
 var age = prompt("Age: ","");
 //Checking if it is null or empty
 if (age === null || age === ""){alert("Please enter your age.");}
 else break;
}
console.log("Age ="+age);
}
showInfo();

答案 1 :(得分:0)

答案 2 :(得分:0)

你可以把它放在一个循环中再次询问。在这里,我使用!name来检查 " truthyness" namenull和空字符串都是" falsy"所以,!name 会为它们返回true,非空字符串是真的,所以!name会 为他们返回false



function ask (msg, errMsg) {
  var name;
  do {
    name = prompt(msg);
    //Checking if it is null or empty
    if (!name) {
      alert(errMsg);
    }
    
  } while (!name);
  return name;
}

function showInfo() {
  var name,
    age;
  name = ask("Name:", "Please enter your name");
  age = ask("Age:", "Please enter your age.");
}

showInfo();




那就是说,除非这只是一个原型或一个小的个人项目,只有你 将使用,不要这样做!在循环提示中粘贴用户将 挫败大多数人。大多数现代浏览器都包括“不要再向我展示这个”#34; 复选框。我不确定如果用户检查它,浏览器会发生什么 可能会继续无限循环并锁定或崩溃。

相反,最好使用页面上的表单:



var elShowInfo = document.getElementById('show-info'),
  elName = document.getElementById('name'),
  elAge = document.getElementById('age'),
  elOut = document.getElementById('output');

function showInfo (ev) {
  // stop the form from submitting
  ev.preventDefault();
  
  var name = elName.value,
    age = elAge.value;
  if (name && age) {
    // do something with name/age
    elOut.textContent = name + ' is ' + age + ' years old.';
  }
}

elShowInfo.addEventListener('click', showInfo, false);

<form>
<label for="name">Name:</label> <input id="name" placeholder="Please enter your name">
<label for="age">Age:</label> <input id="age" placeholder="Please enter your age">
<button id="show-info">Show info</button>
</form>
<div id="output"></div>
&#13;
&#13;
&#13;

每次按下“显示信息”按钮时,它都会检查一次数据,如果有,则会对其执行某些操作;否则它什么都不做。

有一点需要注意,元素的prompt.value属性都会返回字符串,因此如果您要使用age进行某种计算,则需要进行转换它是使用parseIntage = parseInt(age, 10)unary +age = +age;的数字。

进一步阅读: