在窗体中的字段中循环
Loop through fields in a form
假设我有一个表。每一行都包含用户可以填充或不可以填充的表单字段。我需要检查每一行的所有表单字段是否已填充或没有填充。
html是这样的:
<tr class="riga_gar">
<td class="report">
<input type="hidden" id="crediti[<?php echo $i; ?>]" name="crediti[<?php echo $i; ?>]"
value="<?php echo $cred['id_cre']; ?>" >
<?php echo $cred['id_cre'] ?>
</td>
<td class="report gbv" data-gbv="<?php echo $cred['gbv_tot']; ?>">
<?php echo num2cur($cred['gbv_tot']); ?>
</td>
<td class="report">
<?php echo veicolo2name($cred['titolare'],$pdo); ?>
</td>
<td class="report">
<?php echo $cred['stato']; ?>
</td>
<td class="report">
<input class="input_field numerico" id="chiesto" type="text" name="garanzia[<?php echo $i; ?>]" value="<?php echo $chiesto; ?>">
</td>
<td class="report">
<select name="tipo_gar[<?php echo $i; ?>]">
<option value="">Scegli</option>
<?php foreach($tipo_gars as $tipo_gar){
echo '<option value="'.$tipo_gar['id'].'">'.$tipo_gar['descrizione'].'</option>';
}?>
</select>
</td>
</tr>
我要做的是检查每一行的输入和选择是否都有值。
我从这个js:开始
function ajax_submit(){
var submit_val=$("#garante").serialize();
dest="anagrafiche/new_garante1.php";
$('.riga_gar').each(function(i,obj){
if ($(this).val()!='') {
}
});
}
我想运行这个ajax函数:
$.ajax({
type: "POST",
url: dest,
data: submit_val,
success: function(data){
data1=data.split("|");
if(data1[0]=="Successo"){
$("#spnmsg").fadeTo(200,0.1,
function(){$(this).removeClass().addClass("spn_success").html(data1[1]).fadeTo(900,1)});
}else if(data1[0]=="Errore"){
$("#spnmsg").fadeTo(200,0.1,
function(){$(this).removeClass().addClass("spn_error").html(data1[1]).fadeTo(900,1)});
}
},
complete: function(){
$.fancybox.close();
//setTimeout(function(){ $('.container').load('sofferenze/dashboard.php?from=<?php echo $id_soff ?>');},3000);
setTimeout(function(){
$('#upper').load('sofferenze/soff.php?soff=<?php echo $id_soff ?>');
$("#spnmsg").fadeTo(200,0.1,
function(){$(this).removeClass().addClass("spn_normal").html('Cruscotto della sofferenza <?php echo soff2name($id_soff,$pdo); ?>').fadeTo(900,1)});
},3000);
} //chiudo complete function
}); //chiudo $.ajax
仅当:
- 至少一行具有这两个值
- 所有具有值的行都同时具有这两个值
但我一直纠结于如何在每个循环中引用输入和选择的值,以便检查我的条件。
我认为这将对您有所帮助。这将读取每一行并忽略隐藏字段。一旦代码找到填充的两个值,validateForm变量将为true,如果在下一行中输入或选择的一个值为空,则变量将变为false。
$(document).ready(function(){
var validateForm = false;
var check = 0;
$("form").on('submit',function(){
$("tr").each(function(){
console.log($.trim($(this).find("input.input_field").val()) +", "+ $.trim($(this).find("select").val()));
if($.trim($(this).find("input.input_field").val()) != "" && $.trim($(this).find("select").val()) != ""){
validateForm = true;
}
else{
if($.trim($(this).find("input.input_field").val()) == "" && $.trim($(this).find("select").val()) != ""){
if(validateForm){
validateForm = false;
check = 1;
return false;
}
}
if($.trim($(this).find("input.input_field").val()) != "" && $.trim($(this).find("select").val()) == ""){
if(validateForm){
validateForm = false;
check = 1;
return false;
}
}
}
});
if(validateForm && check == 0){
validateForm = true;
}
else{
validateForm = false;
}
if(validateForm){
//call ajax
}
});
});
演示:https://jsfiddle.net/87tkraas/
这是未经测试的,但像这样的东西怎么样:
var allowSubmit = false;
$("form").on("submit", function(e) {
$("tr").each(function() {
var input = $(this).find("input").val();
var select= $(this).find("select").val();
if ((input == "" && select != "") || (input != "" && select == "")) {
return;
} else if (input != "" && select != "") {
allowSubmit = true;
}
});
if (allowSubmit == false) {
e.preventDefault();
}
});
相关文章:
- 而循环只设置php中输入字段中的第一个值
- 循环遍历数组并将值输入到字段中
- 循环访问文档 (validate_doc_update) 中的 CouchDB 字段
- 如何在 for 循环中访问 json 数组字段的名称
- 我的单选按钮没有从foreach循环中获得值,表单验证返回'必填字段'即使已检查
- angularjs用于生日字段的循环
- 循环遍历字段以使用jQuery进行验证
- 循环遍历所有字段,如果任何一个字段的验证失败jquery,则返回false
- jQuery必需字段循环.基于CSS类
- JS 字段验证 - 循环遍历对象,每个字段有三个数据注意事项
- jquery 每个循环检查是否至少填写了一个字段
- JavaScript,循环字段和验证
- 如何在煎茶上循环存储和计数字段数据
- jQuery循环为每个“drop”生成隐藏字段
- 在 Jquery 中添加循环变量并存储在输入字段中
- 在循环访问集合时将动态 ID 分配给隐藏字段
- 如何使用for循环随机生成JSON数据集的字段名称和值
- Rails|Javascript同步多个字段,避免无限循环
- 在窗体中的字段中循环
- 我想在循环中点击组合框时填写我的字段