Saya ingin memberi tanda centang (jika) sebelum pengguna dapat mengetik namanya, tetapi tidak berhasil. Saya masih bisa memasukkan angka di input. Apa yang salah?

var name1 = prompt('enter name');
var surname = prompt('enter surname');
var patronymic = prompt('enter secondname');
var fullName = name1 + " " + surname + " " + patronymic;


if (typeof(name1) === "number" || typeof(surname) === "number"|| typeof(patronymic) === "number") {
    do {
        alert('wrong, try again');
        name1 = prompt('enter name');
        surname = prompt('enter surname');
        patronymic = prompt('enter ');
    }
    while (typeof(name1) === "string" && typeof(surname) === "string" && typeof(patronymic) === "string");
}

alert("U " + fullName);
0
gunniq 16 Januari 2021, 12:00

3 jawaban

Jawaban Terbaik

typeof(name1) === "number" akan selalu salah sebagai name1 karena string input prompt akan selalu berupa string, jika tidak kosong (periksa propmt dokumen untuk jenis pengembaliannya). Harap periksa perbaikan ini, kami dapat menggunakan ekspresi reguler regex untuk memeriksa apakah input berupa angka.

Silakan periksa fungsi isNumber dan komentarnya.

var name1 = prompt('enter name');
var surname = prompt('enter surname');
var patronymic = prompt('enter secondname');


// a function to check whether the input string is number
function isNumber(str) {
  return !!( // !! symbol is to cast a variable to be a boolean (true or false) value
    str && // check whether str is null, if it is then we'll return false, as null is not a number
    str.match(/^\d+$/)); // use regular expression to check whether the input only contains digits. Please check the reference posts in my answer for more information about regex
}

if (isNumber(name1) || isNumber(surname) || isNumber(patronymic)) {
  do {
    alert('wrong, try again');
    name1 = prompt('enter name');
    surname = prompt('enter surname');
    patronymic = prompt('enter ');
  }
  while (isNumber(name1) || isNumber(surname) || isNumber(patronymic));
}
var fullName = name1 + " " + surname + " " + patronymic;

alert("U " + fullName);

Referensi Lainnya

1
マークさん 16 Januari 2021, 09:16

Prompt selalu mengembalikan string. Jika Anda memasukkan angka, itu juga kembali ke variabel sebagai string

Anda dapat menggunakan metode berikut untuk memeriksa angka dalam string.

var name = prompt('Enter');
isNaN(Number(name)) //this will return false if name is a number
0
Kavinda Shehan Rajapakshe 16 Januari 2021, 09:22

Gunakan Ekspresi Reguler untuk memeriksa angka.

var name1;
var surname;
var patronymic;
name1= prompt('enter name');
while(/\d/.test(name1)){
    alert('wrong, try again');
    name1= prompt('enter name');
}
surname = prompt('enter surname');
while(/\d/.test(surname)){
    alert('wrong, try again');
    surname= prompt('enter surname');
}
patronymic = prompt('enter secondname');
while(/\d/.test(patronymic)){
    alert('wrong, try again');
    patronymic= prompt('enter secondname');
}
var fullName = name1 + " " + surname + " " + patronymic;
alert("U " + fullName);
0
Suprit Beck 16 Januari 2021, 09:26