Php mysql jquery javascript не перенаправляет, если ввод пуст

я пытаюсь достичь этого:

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

до сих пор я не мог этого добиться, и вот что у меня есть до сих пор:

Я работаю над файлом backend-search.php, который передает скрытое поле ввода на мою страницу index.php и главную страницу, которая является страницей index.php ..

вот соответствующие коды:

(backend-search.php)

     if(isset($_REQUEST['term'])){
 $sql = "SELECT * FROM productslist WHERE brand LIKE ?";

 if($stmt = mysqli_prepare($link, $sql)){

 $param_term = '%'.$_REQUEST['term'].'%';    mysqli_stmt_bind_param($stmt, 's', $param_term);
     if(mysqli_stmt_execute($stmt)){
         $result = mysqli_stmt_get_result($stmt);
    if(mysqli_num_rows($result) > 0){
        while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){
 echo '<p>'.$row['brand'].' - '.$row['wgtvol'].''.$row['unit'].'('.$row['generic'].') <input id="hiddenid" type="hidden" value="'.$row['id'].'" /></p>';
      }
 }
 else{
 echo '<p style="color: #FFFFFF; background: #b20101; font-weight: 700; "> No matching records found, brand name is still available.</p>';
    }
    } else{
    echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
       }
 }

 mysqli_stmt_close($stmt);
 }

и соответствующие коды из моего index.php:

 <div class="search-box pull-left">
 <input id="search" class="m-top m-bot" type="text" autocomplete="off" placeholder="Search by brand">
 <div class="result" id="result"></div>
 </div>


 <script type="text/javascript">
 $(document).ready(function(){
 $('.search-box input[type="text"]').on("keyup input", function(){

    var inputVal = $(this).val();
    var resultDropdown = $(this).siblings(".result");
    if(inputVal.length){
        $.get("backend-search.php", {term: inputVal}).done(function(data){

          resultDropdown.html(data);
        });
      } else{
        resultDropdown.empty();
    }
 });

 $(document).on("click", ".result p", function(){
 $(this).parents(".search-box").find('input[type="text"]').val($(this).text());
 $(this).parent(".result").empty();

 var link = "view-or-add-stock-modal.php?id=";
     console.log(link);
     console.log($(this).text());
     window.location = link + $(this).find('input[type=hidden]').val(); ;
      });
 });
 </script>

пожалуйста, поторопитесь с написанием кода, так как я использую программу для чтения с экрана и полагаюсь на эту технологию только из-за инвалидности по зрению.

хотя я пробовал этот вариант, который я сделал, он все еще не работает:

     <script type="text/javascript">
 $(document).ready(function(){
$('.search-box input[type="text"]').on("keyup input", function(){

    var inputVal = $(this).val();
    var resultDropdown = $(this).siblings(".result");
    if(inputVal.length){
        $.get("backend-search.php", {term: inputVal}).done(function(data){

          resultDropdown.html(data);
        });
     } else{
        resultDropdown.empty();
      }
 });
 $(document).on("click", ".result p", function(){
 $(this).parents(".search-box").find('input[type="text"]').val($(this).text());
 $(this).parent(".result").empty();

 var link = "view-or-add-stock-modal.php?id=";
 console.log(link);
 console.log($(this).text());
 window.location = link + $(this).find('input[type=hidden]').val(); ;
 if ($("input:text").val().replace(/^\s+|\s+$/g, "").length == 0){
 $('.search-box input[type="text"]').hide();
           }
      });
 });
 </script>

Я готов принять любые соответствующие объяснения и исправить их, если они могут быть предоставлены.

заранее спасибо .. и, пожалуйста, если модераторы собираются пометить это как дубликат, я ищу конкретный ответ и точное объяснение, поэтому, пожалуйста, не отмечайте это сразу, не прочитав полностью весь пост.

Я попытался воспроизвести вашу проблему, но я, по крайней мере, не совсем уверен, что вы хотите заархивировать. Чего я не понял - когда нужно перенаправить пользователя на страницу «обновления»? (кстати, это файл view-or-add-stock-modal.php?) - похоже, это должно (!) произойти только тогда, когда он нажимает на один из тегов <p>, возвращаемых вашим поиском на бэкэнде ajax - это правильное предположение?

Evil_skunk 26.10.2018 11:50

да, это на самом деле "view-or-add-stock-modal.php", а не "update.php" .. хахахахахах, я просто не уверен, достижимо ли то, что я пытаюсь достичь, с моими текущими кодами .. из конечно, с небольшой модификацией ... пользователь может щелкнуть любой результат, который будет "результатом p", и будет перенаправлен на страницу перенаправления, но если <input>, имеющий тип скрытого, пуст, пользователь не должен быть перенаправлен на страницу "view-or-add-stock-modal.php" и должен оставаться на странице index.php и сохранять свои данные в моем окне поиска ..

makLoy 26.10.2018 12:12
0
2
100
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как уточняется в комментариях к вопросу.

Я бы остановился на вашем первом решении и просто изменил код

$(this).parent(".result").empty();

var link = "view-or-add-stock-modal.php?id=";
console.log(link);
console.log($(this).text());

var hiddenInputElem = $(this).find('input[type=hidden]');
//check first if the hidden Input Field is available and has a value
if(hiddenInputElem.length > 0 && hiddenInputElem.val().trim() != ""){
    window.location = link + hiddenInputElem .val();
}

Перенаправление происходит сразу после смены window.location. Поэтому вы проверяете перед тем, есть ли у текущего элемента <p>, на который щелкнули, скрытый ввод (и если он не пустой). В противном случае перенаправления не произойдет, и пользователь останется на текущей странице - возможно, вы захотите показать дополнительную информацию в этом случае.

И просто примечание (мое мнение) - все возможно - поэтому, если вы хотите, чтобы ваш код делал что-то, он архивируется - но вам нужно знать, что вы хотите :-)

Редактировать: Если вы хотите сохранить ввод пользователя, просто удалите эту строку

$(this).parents(".search-box").find('input[type="text"]').val($(this).text());

Здесь вы устанавливаете для ввода текстового поля значение нажатого p - в любом случае, и это, возможно, не то, что вам нужно.

спасибо @Evil_skunk !! он больше не перенаправляет, если нет соответствующей записи со страницы внутреннего поиска, однако я не смог достичь другого ожидаемого результата, если пользователь кликнет на resuLt, у которого нет соответствующего идентификатора или вообще нет идентификатора, и что заключается в том, чтобы сохранить то, что он ввел в окно поиска, и пользователь должен оставаться на странице index.php ..

makLoy 26.10.2018 23:59

большое спасибо @Evil_skunk, я никогда не думал, что это будет так просто .. Я действительно верю, что мне нужно много практиковаться и улучшать свои навыки программирования .. LoLs

makLoy 27.10.2018 10:41

как я могу связаться с вами Evil_skunk / @Evil_skunk?

makLoy 26.11.2018 09:49

Другие вопросы по теме