Предотвращение отправки формы, если динамическое поле пуст … Php / Jquery / Ajax

Привет друзья, мне нужна ваша помощь,

Как вы можете видеть на приведенном ниже изображении, я динамически загружаю вопросы в поле выбора и ответы на вопросы в раскрывающемся списке из базы данных mysql на основе значения названия актива. (это работает нормально)

Но моя главная проблема заключается в том, что я хочу, чтобы пользователь выбирал ответы на все вопросы, а затем запускал только функцию ajax и вставлял базу данных в mysql.

ПРИМЕЧАНИЕ. В некоторых активах есть один вопрос, у некоторых есть 3, а некоторые активы отсутствуют. Нет вопросов, поэтому я не использовал код ниже.

if (assettitle && customquestion1 && customquestion2) {ajax и т. д. *** [Если я использую этот код, тогда у меня возникнет проблема с активами, у которых нет никаких вопросов.]

введите описание изображения здесь

Solutions Collecting From Web of "Предотвращение отправки формы, если динамическое поле пуст … Php / Jquery / Ajax"

Вы можете добавить счетчик в некоторые данные-attr для активов и подтвердить это до AJAX за один снимок.

$('.assets-selected').on('change', function(){ $(this).data( "selecteds", $(this).find('option').length); }); function checkAssets(){ $('.assets-selected').each(function(){ if (typeof $(this).data('selecteds') == undefined || $(this).data('selecteds') < 1) { return false; } else { return true; } }); } if(checkAssets()) { //submit the form to server $.ajax({ url : '../pages/php_action/addnewlead/creatlead.php', type : 'POST', data : form.serialize(), dataType : 'json', success:function(response) { // remove the error $(".form-group").removeClass('has-error').removeClass('has-success'); if(response.success == true) { $(".messages").html('<div class="alert alert-success alert-dismissible" role="alert">'+ '<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>'+ '<strong> <span class="glyphicon glyphicon-ok-sign"></span> </strong>'+response.messages+ '</div>'); // reset the form $("#newleadform")[0].reset(); // reload page after 7 sec. setInterval(function () { location.reload(null, false); }, 7000); } else { $(".messages").html('<div class="alert alert-warning alert-dismissible" role="alert">'+ '<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>'+ '<strong> <span class="glyphicon glyphicon-exclamation-sign"></span> </strong>'+response.messages+ '</div>'); } // /else } // success }); // ajax subit } /// if 

Fetch Assets Вопросы и ответы из базы данных (PHP). Поместите класс, который я показал в моем примере.

Послушайте, что вы вызываете все вопросы один раз. Перед проверкой сделайте проверку, чтобы избежать ошибок и других проблем.

 <?php //load_data.php $connect = mysqli_connect("localhost", "root", "", "test"); $output = ''; if(isset($_POST["assetid"])) { if($_POST["assetid"] != '') { $sql = "SELECT * FROM customquestions WHERE assetid = '".$_POST["assetid"]."'"; } else { $sql = "SELECT * FROM customquestions WHERE assetid = 'akash'"; } $result = mysqli_query($connect, $sql); $quesno = 1; while($row = mysqli_fetch_array($result)) { //poor and ugly way to do something to filter, the best solution is the questions have a table 1 to N, where the 1 table is cover, main information and the N the questions, so each index from your array will be filled only with the questions that db has stored else will bring nothing and you can validate better the frontend, besides provides more scalability. if ($row['colqa1'] == '' && $row['colqa2'] == '' && $row['colqa3'] == '' && $row['colqa4'] == '' && $row['colqa5'] == '' && $row['colqa5'] == '' && $row['colqa6'] == '' && $row['colqa7'] == '' && $row['colqa8'] == '' && $row['colqa9'] == '' && $row['colqa10'] == ''){ continue; //don't show dropdown if you don't have questions! } $output .= '<div class="col-sm-6">'; $output .= '<div class="form-group">'; $output .= '<label for="campaignname">'.$row["cqname"].'</label>'; $output .= '<select name="cq'.$quesno.'" size="5" class="form-control assets-selected" required>'; // $output .= '<div style="border:1px solid #ccc; padding:20px; margin-bottom:20px;">'.$row["product_name"].'</div>'; // $output .= '<tr><td>'.$row["cqname"].'<br></td>'; $output .= '<option value="" required>Select Custom Question Answer</option> <option value="'.$row["cqa1"].'">'.$row["cqa1"].'</option> <option value="'.$row["cqa2"].'">'.$row["cqa2"].'</option> <option value="'.$row["cqa3"].'">'.$row["cqa3"].'</option> <option value="'.$row["cqa4"].'">'.$row["cqa4"].'</option> <option value="'.$row["cqa5"].'">'.$row["cqa5"].'</option> <option value="'.$row["cqa6"].'">'.$row["cqa6"].'</option> <option value="'.$row["cqa7"].'">'.$row["cqa7"].'</option> <option value="'.$row["cqa8"].'">'.$row["cqa8"].'</option> <option value="'.$row["cqa9"].'">'.$row["cqa9"].'</option> <option value="'.$row["cqa10"].'">'.$row["cqa10"].'</option> </select>'; // $output .= '<tr><td colspan="10"><hr></td></tr>'; $output .= '</div></div></div>'; $quesno++; } echo $output; } ?>