我正在尝试验证我的数组输入字段,如果它是空的,不幸的是我的代码似乎不起作用我不知道为什么,以及验证这个的最佳方法是什么。
<input type="text" name="sub_crit_text[]" class="sub_crit_text" value="text1">
<input type="text" name="sub_crit_text[]" class="sub_crit_text" value="text2">
<input type="text" name="sub_crit_text[]" class="sub_crit_text" value="text3">
<input type="text" name="sub_crit_text[]" class="sub_crit_text" value="text4">
我的js
var sub_crit_arr = [];
$('.sub_crit_text').each(function(k , v){
sub_crit_arr[k] = $(v).val();
});
if(sub_crit_arr.length > 0){
}else{
alert('Sub criteria cannot be empty');
return false;
}
答案 0 :(得分:2)
空字符串数组将为您提供大于0的长度:
Syntax error in INSERT INTO statement
首先尝试with dmInfo do
begin
qryInfo.SQL.Clear;
qryInfo.SQL.Add('INSERT INTO tblGymnast');
qryInfo.SQL.Add('(GymnastID, Surname, Name, NickName, FamilyID, PosCode, CellNo, SAGFID, Photo, StartDate, BirthDate, Gender, Race, Category, IDNum, UpgrdTo, SchoolID, LevelID, TransID, DokterID, MedNum, MedID, Language)');
qryInfo.SQL.Add(' VALUES(:GymnastID, :Surname, :Name, :NickName, :FamilyID, :PosCode, :CellNo, :SAGFID, :Photo, :StartDate, :BirthDate, :Gender, :Race, :Category, :IDNum, :UpgrdTo, :SchoolID, :LevelID, :TransID, :DokterID, :MedNum, :MedID, :Language)');
qryInfo.Parameters.ParamByName('GymnastID').Value:= 'a';
qryInfo.Parameters.ParamByName('Surname').Value:= 'a';
qryInfo.Parameters.ParamByName('Name').Value:= 'a';
qryInfo.Parameters.ParamByName('NickName').Value:= 'a';
qryInfo.Parameters.ParamByName('FamilyID').Value:= 'a';
qryInfo.Parameters.ParamByName('PosCode').Value:= 'a';
qryInfo.Parameters.ParamByName('CellNo').Value:= 'a';
qryInfo.Parameters.ParamByName('SAGFID').Value:= 'a';
qryInfo.Parameters.ParamByName('Photo').Value:= 'a';
qryInfo.Parameters.ParamByName('StartDate').Value:= 'a';
qryInfo.Parameters.ParamByName('BirthDate').Value:= 'a';
qryInfo.Parameters.ParamByName('Gender').Value:= 'a';
qryInfo.Parameters.ParamByName('Language').Value:= 'a'; //This gives the error
qryInfo.Parameters.ParamByName('Race').Value:= 'a';
qryInfo.Parameters.ParamByName('Category').Value:= 'a';
qryInfo.Parameters.ParamByName('IDNum').Value:= 'a';
qryInfo.Parameters.ParamByName('UpgrdTo').Value:= 'a';
qryInfo.Parameters.ParamByName('SchoolID').Value:= 'a';
qryInfo.Parameters.ParamByName('LevelID').Value:= 'a';
qryInfo.Parameters.ParamByName('TransID').Value:= 'a';
qryInfo.Parameters.ParamByName('DokterID').Value:= 'a';
qryInfo.Parameters.ParamByName('MedNum').Value:= 'a';
qryInfo.Parameters.ParamByName('MedID').Value:= 'a';
qryInfo.ExecSQL;
end;
结果:
var sub_crit_arr = ['','','','']
答案 1 :(得分:1)
Array.filter
将为您提供元素而不是布尔值。如果您只想验证并且无法使用无效条目,则可以使用array.some
或array.every
$("#btnValidate").on("click", function(){
var valid = [].every.call($(".sub_crit_text"), function(el){
return el.value.trim().length > 0
});
console.log(valid)
})
&#13;
sub_crit_text
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<input type="text" name="sub_crit_text[]" class="sub_crit_text" value="text1">
<input type="text" name="sub_crit_text[]" class="sub_crit_text" value="text2">
<input type="text" name="sub_crit_text[]" class="sub_crit_text" value="text3">
<input type="text" name="sub_crit_text[]" class="sub_crit_text" value="text4">
<button id="btnValidate">Validate</button>
&#13;
$("#btnValidate").on("click", function(){
var inValid = [].some.call($(".sub_crit_text"), function(el){
return el.value.trim().length === 0
});
console.log(inValid);
})
&#13;
sub_crit_text
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<input type="text" name="sub_crit_text[]" class="sub_crit_text" value="text1">
<input type="text" name="sub_crit_text[]" class="sub_crit_text" value="text2">
<input type="text" name="sub_crit_text[]" class="sub_crit_text" value="text3">
<input type="text" name="sub_crit_text[]" class="sub_crit_text" value="text4">
<button id="btnValidate">Validate</button>
&#13;
答案 2 :(得分:0)
如果您只是想检查其中一个输入是否为空:
<强> JS 强>
var valid = false ;
$('.sub_crit_text').each(function(k , v){
if ( $(v).val() ) valid = true ;
});
if (!valid)
alert("Sub criteria cannot be empty");
请注意,所有输入最初都有值。所以也许这就是你的代码不起作用的原因。
答案 3 :(得分:-1)
您可以单独使用filter
,
if($('.sub_crit_text').filter(function(){ return !this.value.trim(); }).length){
alert('Sub criteria cannot be empty');
return false;
}
不需要引入另一个数组,也可以减少一次迭代。