Validasi JavaScript untuk bidang masukan kosong


100

Saya memiliki kolom input ini yang <input name="question"/>ingin saya panggil fungsi IsEmpty saat mengirimkan mengklik tombol kirim.

Saya mencoba kode di bawah ini tetapi tidak berhasil. ada saran?

<html>

<head>
  <title></title>
  <meta http-equiv="Content-Type" content="text/html; charset=unicode" />
  <meta content="CoffeeCup HTML Editor (www.coffeecup.com)" name="generator" />
</head>

<body>


  <script language="Javascript">
    function IsEmpty() {

      if (document.form.question.value == "") {
        alert("empty");
      }
      return;
    }
  </script>
  Question: <input name="question" /> <br/>

  <input id="insert" onclick="IsEmpty();" type="submit" value="Add Question" />

</body>

</html>


Anda menerima jawaban yang tidak valid . Memeriksa null ganjil karena input (atau textarea) selalu mengembalikan String. Selain itu, Anda tidak boleh menggunakan JavaScript sebaris. Juga Anda tidak boleh menggunakan secara membabi buta return false... dll dll
Roko C. Buljan

Jawaban:


124

<script type="text/javascript">
  function validateForm() {
    var a = document.forms["Form"]["answer_a"].value;
    var b = document.forms["Form"]["answer_b"].value;
    var c = document.forms["Form"]["answer_c"].value;
    var d = document.forms["Form"]["answer_d"].value;
    if (a == null || a == "", b == null || b == "", c == null || c == "", d == null || d == "") {
      alert("Please Fill All Required Field");
      return false;
    }
  }
</script>

<form method="post" name="Form" onsubmit="return validateForm()" action="">
  <textarea cols="30" rows="2" name="answer_a" id="a"></textarea>
  <textarea cols="30" rows="2" name="answer_b" id="b"></textarea>
  <textarea cols="30" rows="2" name="answer_c" id="c"></textarea>
  <textarea cols="30" rows="2" name="answer_d" id="d"></textarea>
</form>


2
'onsubmit = "return validate ()"' perlu diubah. validate bukanlah nama fungsinya. Seharusnya 'onsubmit = "return validateForm ()"'
tazboy

3
Akan lebih baik untuk menjelaskan jawaban dan keraguan OP.
Vishal

7
Ini diterima sebenarnya tidak valid. Koma dalam ifpernyataan hanya akan menyebabkan pengecekan terakhir dikembalikan: stackoverflow.com/a/5348007/713874
Bing

36

Lihat contoh kerja di sini


Anda kehilangan <form>elemen yang dibutuhkan . Beginilah seharusnya kode Anda:

function IsEmpty() {
  if (document.forms['frm'].question.value === "") {
    alert("empty");
    return false;
  }
  return true;
}
<form name="frm">
  Question: <input name="question" /> <br />
  <input id="insert" onclick="return IsEmpty();" type="submit" value="Add Question" />
</form>


Apakah ada cara untuk melakukan ini untuk semua bidang dalam formulir?
Sparecycle

35

Bidang masukan dapat memiliki spasi putih , kami ingin mencegahnya.
Gunakan String.prototype.trim () :

function isEmpty(str) {
    return !str.trim().length;
}

Contoh:

const isEmpty = str => !str.trim().length;

document.getElementById("name").addEventListener("input", function() {
  if( isEmpty(this.value) ) {
    console.log( "NAME is invalid (Empty)" )
  } else {
    console.log( `NAME value is: ${this.value}` );
  }
});
<input id="name" type="text">


1
Selain null dan "", kode saya, saya juga kehilangan bagian ini. Itu berhasil untuk saya. Terima kasih Roko.
Pedro Sousa

17

Saya ingin menambahkan atribut yang diperlukan jika pengguna menonaktifkan javascript:

<input type="text" id="textbox" required/>

Ini berfungsi di semua browser modern.


10
if(document.getElementById("question").value.length == 0)
{
    alert("empty")
}

7

Tambahkan "pertanyaan" id ke elemen masukan Anda, lalu coba ini:

   if( document.getElementById('question').value === '' ){
      alert('empty');
    }

Alasan kode Anda saat ini tidak berfungsi adalah karena Anda tidak memiliki tag FORM di sana. Selain itu, pencarian menggunakan "nama" tidak disarankan karena sudah usang.

Lihat jawaban @Paul Dixon di posting ini: Apakah atribut 'name' dianggap ketinggalan jaman untuk <a> tag anchor?


1
if(document.getElementById("question").value == "")
{
    alert("empty")
}

1
... tidak ada atribut "id" pada <input>elemen; ini hanya akan berfungsi di IE karena IE rusak.
Pointy

maaf, saya pikir ada ID, document.getElementsByName ("question") [0] .value, atau cukup tambahkan ID ke elemen
Kenneth J

1

Cukup tambahkan tag ID ke elemen input ... yaitu:

dan periksa nilai elemen di javascript Anda:

document.getElementById ("pertanyaan"). nilai

Oh ya, dapatkan firefox / firebug. Ini satu-satunya cara untuk menggunakan javascript.


0

Solusi saya di bawah ini ada di es6 karena saya memanfaatkan constjika Anda lebih suka es5 Anda dapat mengganti semua constdengan var.

const str = "       Hello World!        ";
// const str = "                     ";

checkForWhiteSpaces(str);

function checkForWhiteSpaces(args) {
    const trimmedString = args.trim().length;
    console.log(checkStringLength(trimmedString))     
    return checkStringLength(trimmedString)        
}

// If the browser doesn't support the trim function
// you can make use of the regular expression below

checkForWhiteSpaces2(str);

function checkForWhiteSpaces2(args) {
    const trimmedString = args.replace(/^\s+|\s+$/gm, '').length;
    console.log(checkStringLength(trimmedString))     
    return checkStringLength(trimmedString)
}

function checkStringLength(args) {
    return args > 0 ? "not empty" : "empty string";
}


0

<pre>
       <form name="myform" action="saveNew" method="post" enctype="multipart/form-data">
           <input type="text"   id="name"   name="name" /> 
           <input type="submit"/>
       </form>
    </pre>

<script language="JavaScript" type="text/javascript">
  var frmvalidator = new Validator("myform");
  frmvalidator.EnableFocusOnError(false);
  frmvalidator.EnableMsgsTogether();
  frmvalidator.addValidation("name", "req", "Plese Enter Name");
</script>

sebelum menggunakan kode di atas Anda harus menambahkan file gen_validatorv31.js


0

Menggabungkan semua pendekatan kita dapat melakukan sesuatu seperti ini:

const checkEmpty = document.querySelector('#checkIt');
checkEmpty.addEventListener('input', function () {
  if (checkEmpty.value && // if exist AND
    checkEmpty.value.length > 0 && // if value have one charecter at least
    checkEmpty.value.trim().length > 0 // if value is not just spaces
  ) 
  { console.log('value is:    '+checkEmpty.value);}
  else {console.log('No value'); 
  }
});
<input type="text" id="checkIt" required />

Perhatikan bahwa jika Anda benar-benar ingin memeriksa nilai, Anda harus melakukannya di server, tetapi ini di luar cakupan pertanyaan ini.


0

Anda dapat mengulang setiap masukan setelah mengirimkan dan memeriksa apakah sudah kosong

let form = document.getElementById('yourform');

form.addEventListener("submit", function(e){ // event into anonymous function
  let ver = true;
  e.preventDefault(); //Prevent submit event from refreshing the page

  e.target.forEach(input => { // input is just a variable name, e.target is the form element
     if(input.length < 1){ // here you're looping through each input of the form and checking its length
         ver = false;
     }
  });

  if(!ver){
      return false;
  }else{
     //continue what you were doing :)
  } 
})

0

<script type="text/javascript">
  function validateForm() {
    var a = document.forms["Form"]["answer_a"].value;
    var b = document.forms["Form"]["answer_b"].value;
    var c = document.forms["Form"]["answer_c"].value;
    var d = document.forms["Form"]["answer_d"].value;
    if (a == null || a == "", b == null || b == "", c == null || c == "", d == null || d == "") {
      alert("Please Fill All Required Field");
      return false;
    }
  }
</script>

<form method="post" name="Form" onsubmit="return validateForm()" action="">
  <textarea cols="30" rows="2" name="answer_a" id="a"></textarea>
  <textarea cols="30" rows="2" name="answer_b" id="b"></textarea>
  <textarea cols="30" rows="2" name="answer_c" id="c"></textarea>
  <textarea cols="30" rows="2" name="answer_d" id="d"></textarea>
</form>


Hai, ketika Anda memberikan solusi, akan sangat bagus untuk memberikan alasan mengapa solusi Anda memperbaiki masalah yang mungkin dapat membantu pembaca di masa mendatang.
Ehsan Mahmud
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.