如何创建显示基于“提示”输入类型的文本的“警报”弹出窗口?

时间:2019-04-12 15:01:23

标签: javascript

我是尝试一些基本Javascript的初学者。 我的目标是显示(1.)提示消息(请求名称),然后根据提示输入显示(2.)警报。如果提示输入的是有效名称(字符串),则将出现一个警告框,其中包含文本“谢谢” +名称。否则,警报应显示为文本“您未输入有效名称”。

1。提示消息起作用,但是,无论输入名称/文本还是数字,2.警报消息都显示相同的文本。换句话说,警报消息不会区分字符串或数字,而是始终显示文本“谢谢” +名称。

这是我的代码:

function EnterName() {
  var name = prompt("Enter your name here:");
  if (typeof name === "string") {
    alert("thank you " + name);
  } else if (typeof name === "number") {
    alert("you didn't enter a valid name");
  }
}
console.log(EnterName());

在提示框中输入数字后,如何使警报框显示“您没有输入有效名称”,我们将不胜感激。

谢谢。

4 个答案:

答案 0 :(得分:1)

提示总是返回一个字符串,您可以尝试将其转换为数字,然后检查它是否为NaN,这表示它是字符串。不过最好在这里使用正则表达式。如果您正在登录,则可能还需要返回名称。

function EnterName() {
  var name = prompt("Enter your name here:");
  var isNum = !isNaN(Number(name));
  if (!isNum) {
    alert("thank you " + name);
  } else {
    alert("you didn't enter a valid name");
  }
  return name;
}
console.log(EnterName());

答案 1 :(得分:0)

您总是在提示中输入字符串。因此,您可以尝试在下面将其设置为int,如果成功,则给出错误消息,否则打个招呼。

function EnterName() {
  var name = prompt("Enter your name here:");
  if(parseInt(name)) {
    alert("you didn't enter a valid name");
  }
  else if (!parseInt(name)) {
    alert("thank you " + name);
  }
}

答案 2 :(得分:0)

提示方法参数类型始终为String,无论您输入什么,您的条件始终为true:

 //text & defaultText types are String
`prompt(text, defaultText)`

因此,您需要更改条件。一种解决方案是使用regex,例如,您可以将代码更改为此:

function EnterName() {
   var name = prompt("Enter your name here:");
   !name.match(/^\d+$/) ?
        alert("thank you " + name)
    :     
        alert("you didn't enter a valid name");
}
console.log(EnterName());

基本上!name.match(/^\d+$/)将检查输入的数据是否为数字,并以此为基础显示警报消息。

https://jsfiddle.net/6mxL59k0/1/

答案 3 :(得分:0)

因此,我要强调的一件事是您如何解决这个问题。您正在思考问题,“如果输入数字,这应该是错误的!为什么它不起作用?!”。之所以这样,是因为提示符将始终返回键入const result = await MemoryCard.aggregate([ {$match: {'updatedAt': { $gte: d, $lte: new Date(), }}}, { $lookup: { from: 'users', localField: 'owner', foreignField: '_id', as: 'owner', }, }, {$unwind: '$owner'}, {$unwind: '$profiles'}, {$match: { 'progress.createdAt': { $gte: d, $lte: new Date(), }, 'progress.file_one': {$eq: true}, 'progress.file_two': {$eq: true}, }}, {$unwind: '$progress'}, { $group: { '_id': '$_id', 'owner': {$first: '$owner'}, 'progress': {$addToSet: '$progress'}, 'profiles': {$last: '$profiles'}, }, }, { '$project': { 'owner.email': '$owner.email', 'owner.username': '$owner.username', 'progress': '$progress', 'profile': '$profiles', }, }, ]); 的值。您正在查看是否有stringnumber,具体取决于语言。

因此,我们可以将其分为两个问题。看看这个家伙是否是一个字符串,看看那个字符串是否包含数字

下面的代码显示了使用两个函数来实现此目的的好方法

int

所以我们有我们的主要功能,它接收提示,提示总是返回function enterName() { // Javscript functions should always start with a lowercase unless it is a function express and can be invoked using the `new` keyword var name = prompt("Enter your name here:"); if (!checkIfContainsNumber(name)) { alert("thank you " + name); } else { // if f we dont have a number, we have a valid name, otherwise we are invalid! alert("you didn't enter a valid name"); } }

string

我们的第二个函数// this solves problem 2, seeing if we have a number inside of our string function checkIfContainsNumber(myString) { return /\d/.test(myString); } enterName(); 使用匹配数字的正则表达式来解决问题的第二部分(在这种情况下为checkIfContainsNumber