Как отобразить предупреждающее сообщение, используя JQuery вместо Javascript? - PullRequest
0 голосов
/ 14 мая 2019

Я создал HTML-страницу, которая содержит форму. Я связал его с файлом javascript, который говорит браузеру отображать предупреждающее сообщение всякий раз, когда пользователь разрешает очистить поля. Структура HTML следующая:

<!DOCTYPE html>
<html>
<head>
    <title> title </title>
    <link rel="stylesheet" type="text/css" href="example.css">

</head>
<body>

    <h1>Modulo di richiesta informazioni</h1>

    <h2>Inserisci i tuoi dati:</h2>

    <form onsubmit="return validateForm()">

        <select name="status">
            <option value="Sig.">Sig.</option>
            <option value="Sig.ra">Sig.ra</option>
            <option value="Sig.na">Sig.na</option>
        </select>
        <br>

        <label>Nome:</label><br>
        <input type="text" name="name" id="name" value="scrivi il nome"><br>

        <label>Cognome:</label><br>
        <input type="text" name="surname" id="surname"><br>

        <label>email:</label><br>
        <input type="email" name="email" id="email">
        <br>


        <label>Numero di tel:</label><br>
         <input type="number" name="numero" id="numero">
         <br>

        <label>
        Inserisci la tua richiesta:</label>
        <br>
        <textarea name="commenti">Scrivi qui la tua richiesta:</textarea>
         <br>


        <label> Seleziona il servizio per il quale desideri richiedere informazioni:</label><br>

        <label> Chatbot</label>
        <input type="checkbox" name="Service" value="Chatbot">
        <label>Assistente virtuale</label>
        <input type="checkbox" name="Service" value="Assistente">
        <label> MySpoofer.it </label>
        <input type="checkbox" name="Service" value="MySpoofer">

        <br>


        <input type="submit" name="submit"> 
    </form>

    <script type="text/javascript" src="2_jsfile.js"></script>

</body>
</html>

Фрагмент Javascript, связанный с ним, выглядит следующим образом:

function validateForm(){
    var x = document.getElementById('surname').value;
    if(x == ""){
        alert("Inserisci il cognome");
        return false;   
    } 
    var y = document.getElementById('email').value;
    if (y == "") {
        alert("Scrivi il tuo indirizzo e-mail");
        return false;
    }
    var z = document.getElementById('numero').value;
    if (z == "") {
        alert("Inserisci il tuo numero di telefono");
        return false;
    }

В операторах else if я хочу заменить метод alert следующим методом JQuery, чтобы получить сообщение, которое отображает сообщение для пользователя, но оно не работает, поэтому я не уверен, что это правильный метод:

    function validateForm(){
    var x = document.getElementById('surname').value;
    if(x == ""){
        $("<form>").html("Si prega di compilare i campi 
       con i dati richiesti");  
        return false;   
    } 
    var y = document.getElementById('email').value;
    if (y == "") {
        $("form").html("<div>Si prega di compilare i campi con i dati richiesti</div>");
        return false;
    }
    var z = document.getElementById('numero').value;
    if (z == "") {
        $("form").html("<div>Si prega di compilare i campi con i dati richiesti</div>");
        return false;
    }

}

Кто может отображать предупреждающее сообщение, используя JQuery вместо классического Javascript?

Ответы [ 2 ]

1 голос
/ 14 мая 2019

Вы можете использовать jQuery UI Диалог по вашему требованию $( "#dialog" ).dialog();

 $( function() {
    $( "#dialog" ).dialog();
  } );
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>jQuery UI Dialog - Default functionality</title>
  <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
  <link rel="stylesheet" href="/resources/demos/style.css">
  <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
  <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
</head>
<body>
 
<div id="dialog" title="Error Title">
  <p>The content error here.</p>
</div>
 
 
</body>
</html>
0 голосов
/ 14 мая 2019

Вы можете сделать проверку также без jQuery UI. Измените свою функцию проверки на что-то вроде

function validateForm(){ 
 $('form div.msg').remove();
 var ret=0;
 $('#name,#surname,#numero').each(
  function(i,o){
    if (o.value==''){
     $(o).after('<div class="msg">'+o.id+': Si prega di compilare i campi con i dati richiesti</div>');
     ret++;
    }
  });
 return !ret
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<h1>Modulo di richiesta informazioni</h1>

    <h2>Inserisci i tuoi dati:</h2>

    <form onsubmit="return validateForm()">

        <select name="status">
            <option value="Sig.">Sig.</option>
            <option value="Sig.ra">Sig.ra</option>
            <option value="Sig.na">Sig.na</option>
        </select>
        <br>

        <label>Nome:</label><br>
        <input type="text" name="name" id="name" value="scrivi il nome"><br>

        <label>Cognome:</label><br>
        <input type="text" name="surname" id="surname"><br>

        <label>email:</label><br>
        <input type="email" name="email" id="email">
        <br>


        <label>Numero di tel:</label><br>
         <input type="number" name="numero" id="numero">
         <br>

        <label>
        Inserisci la tua richiesta:</label>
        <br>
        <textarea name="commenti">Scrivi qui la tua richiesta:</textarea>
         <br>


        <label> Seleziona il servizio per il quale desideri richiedere informazioni:</label><br>

        <label> Chatbot</label>
        <input type="checkbox" name="Service" value="Chatbot">
        <label>Assistente virtuale</label>
        <input type="checkbox" name="Service" value="Assistente">
        <label> MySpoofer.it </label>
        <input type="checkbox" name="Service" value="MySpoofer">

        <br>


        <input type="submit" name="submit"> 
    </form>

Это добавит <div> с сообщением об ошибке под каждым из целевых полей ввода, если оно окажется пустым. До того, как это произойдет, все потенциально существующие сообщения о предыдущих ошибках будут удалены $('form div.msg').remove().

Изменить:

Если бы вы действительно хотели, вы могли бы сократить эту функцию еще больше, используя .filter() вместо .each(), но результат, вероятно, менее читабелен:

function validateForm(){ 
 $('form div.msg').remove();
 return !$('#name,#surname,#numero')  // the ! negates the calculated length ...
   .filter((i,o)=>o.value==''                // is field empty?
      ? $(o).after('<div class="msg">'+o.id  // yes: place message!
                   +': Si prega di compilare i campi con i dati richiesti</div>')
      : false                                // no:  remove from jquery object
    ).length;  // length: number of empty fields
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...