使用jQuery检查输入表单字段值(空和null)的正确方法是什么?

What is the right way to check a input form field value(empty and null..) using jQuery?

本文关键字:方法 是什么 null 空和 输入 检查 jQuery 表单 字段 使用      更新时间:2023-09-26

在表单中有一些输入。我正在尝试检查这些值的空和null。

我的js代码为:

$(function(){
  $('#submit').click(function(){
 var cid = $('#CTID').val();
 var sid = $('#sbj').val();
 var d = $('#bdate').val();
 var t = $('#time').val();
 var dt = d+' '+t;
 var path = '/admin/exam_schedule';
 if (cid ==''||cid==null || sid==''||cid==null || d==''||d==null || t==''||t==null) {
    alert('Input all data fields');
 }
 else{
     var url='/admin/insert_exam_schedule';
    $.post(url,{c:cid,s:sid,d:dt},function(data){
       alert(data);
       window.location.href= path
    });
 }
  });
});

但是这个代码的问题是:当我给输入字段空间,然后它把空间作为输入。但是,我想验证所有可能的方式,以便我可以将实际数据作为输入。

val()将只返回select元素的null,其他的都应该返回'',因此,如果您不使用select元素,那么str != ''str.length > 0应该足够了。

如果你使用的是select元素,那么你检查是否先分配值,例如str && str != ''str && str.length > 0(或者你默认null'')。

如果你想排除只有空格的字符串,那么在验证时使用trim()。

var cid = $('#CTID').val();
var sid = $('#sbj').val();
var d = $('#bdate').val();
var t = $('#time').val();
var dt = d+' '+t;
if (cid.trim() == '' || sid.trim() == '' || d.trim() == '' || t.trim() == '') {
    // data invalid
}
else {
    // data valid
}

试试,

var condition = $('#CTID,#sbj,#bdate,#time').map(function(){
  return $.trim(this.value);
}).get().join('') === '';
if(condition){ alert('Input all data fields'); }

演示

简易版本,

var condition = false;
$('#CTID,#sbj,#bdate,#time').each(function(){
  if($.trim(this.value) === "") {
    condition = true;
    return false;
  }
})
if(condition){ alert('Input all data fields'); }

完整代码应该是,

 $('#submit').click(function(e){
   e.preventDefalut();
   var condition = $('#CTID,#sbj,#bdate,#time').map(function(){
     return $.trim(this.value);
   }).get().join('') === '';
   if(condition){ alert('Input all data fields'); }
   else {
           var url='/admin/insert_exam_schedule';
           $.post(url,{c:cid,s:sid,d:dt},function(data){
            alert(data);
            window.location.href= path
           }); 
    }
 });