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

时间:2014-06-28 10:08:23

标签: javascript jquery

我有一些输入归档到表单中。我试图检查那些值的空值和空值。

我的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
    });
 }
  });
});

但是这段代码的问题是:当我在输入字段中输入空格然后它将空格作为输入。但是,我想验证所有可能的方式,以便我可以将实际数据作为输入。 / p>

2 个答案:

答案 0 :(得分:1)

val()只返回nullselect元素,其他所有内容都应返回'',因此,如果您没有使用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
}

答案 1 :(得分:-1)

尝试,

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

if(condition){ alert('Input all data fields'); }

DEMO

简易版,

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
           }); 
    }
 });