我在这里遇到了一些问题(或者我实际上并不知道)我是PHP的新手,我想知道是否有可能获得附加了PHP的表单输入字段的值Jquery是用户选择正确的选项。
问题是我正在获取之前在页面上加载的所有输入字段中的所有值。为了提交表单,所有的值都是必需的,但事实是,当用户选择并且选择字段的选项没有被PHP处理时,表单中附加的字段(使用Jquery)我可以'访问他们的价值观。
基本上如此:如果用户没有选择任何数字(默认为0),则字段不会出现,也不需要填写,但是,如果用户在选择输入中选择“1到10”输入字段的数量和要填写的NEED以提交表单..我怎样才能实现?
这是代码
这是我在php表单页面中的DOCTYPE之前的PHP代码:
$errores = [];
$faltantes = [];
if (($_SERVER['REQUEST_METHOD'] == 'POST') && (isset($_POST['continue']))) :
$expected = ['nombres', 'apellidos', 'cedula_tipo', 'cedula_no', 'fecha_nacimiento', 'sexo', 'edad', 'civil', 'direccion', 'ciudad', 'pais', 'tel_hab', 'tel_cel', 'email', 'plan', 'pago', 'beneficiarios'];
$requeridos = ['nombres', 'apellidos', 'cedula_tipo', 'cedula_no', 'fecha_nacimiento', 'sexo', 'edad', 'civil', 'direccion', 'ciudad', 'pais', 'tel_hab', 'tel_cel', 'email', 'plan', 'pago', 'beneficiarios'];
require './includes/tdaform_process1test.php';
if (!$errores && !$faltantes) :
endif;
endif;
这是用户选择的表单字段,并根据其选择显示其他输入:
<form action="<?php $_SERVER['PHP_SELF']; ?>" method="POST" id="planilla_tda" name="planilla_tda">
<div class="bene-select">
<h4>Puedes agregar beneficiarios a tu plan.</h4>
<label for="beneficiarios">Cantidad de beneficiarios</label>
<select name="beneficiarios" id="beneficiariosCount">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
</div>
<div id="beneficiarios" class="beneficiarios"></div>
<button type="submit" class="btn-contacto" name="continue" value="submit">enviar planilla</button>
</form>
这是当用户选择“0”以外的选项时附加的DIV(包含输入字段):
<div class="beneficiario-wrap">
<label for="nombre_bene">Nombre y Apellido</label>
<input type="text" name="nombre_bene[]" value="">
<label for="cedulabene_no">Cedula beneficiario</label>
<div>
<select name="cedulabene_tipo">
<option value="Venezolano" selected>V </option>
<option value="Extranjero">E </option>
</select> <input type="text" name="cedulabene_no[]" value="" maxlength="8">
</div>
<label for="edad_bene">Edad beneficiario</label>
<input type="text" name="edad_bene[]" value="">
</div>
这就是我用Jquery附加输入字段的方式:
const divToAppend = '<div class="beneficiario-wrap"><label for="nombre_bene">Nombre y Apellido</label><input type="text" name="nombre_bene" value=""><label for="nombre_bene">Cedula beneficiario</label><div><select name="cedulabene_tipo"><option value="Venezolano" selected>V </option><option value="Extranjero">E </option></select> <input type="text" name="cedulabene_no" value="" maxlength="8"></div><label for="edad_bene">Edad beneficiario</label><input type="text" name="edad_bene" value=""></div>';
let number = $('#beneficiarios').val();
$('#beneficiariosCount').on('change', function () {
$('#beneficiarios').html('');
number = $(this).val();
for (let i = 0; i < number; i++) {
$('#beneficiarios').append(divToAppend);
}
});
这就是我循环遍历所有字段并使用PHP来实现它们的方式:
$suspect = false;
$emailPattern = '/Content-type:|Bcc:|Cc:/i';
function isSuspect ($value, $emailPattern, &$suspect) {
if (is_array($value)) :
foreach ($value as $item) {
isSuspect($item, $emailPattern, $suspect);
}
else :
if (preg_match($emailPattern, $value)) {
$suspect = true;
}
endif;
}
isSuspect($_POST, $emailPattern, $suspect);
if (!$suspect) :
foreach ($_POST as $key => $value) {
$value = is_array($value) ? $value : trim($value);
if (empty($value) && in_array($key, $requeridos)) {
$faltantes[] = $key;
$$key = '';
} elseif (in_array($key, $expected)) {
$$key = $value;
}
}
endif;
正如我所说,我是PHP的新手,我开始采用这种方式进行自我教育。所以,请帮忙!