2016-12-05 9 views
0

Ich brauche etwas Hilfe mit diesem Javascript-Code. Ich möchte das Steuerfeld "Nacht" und das Textfeld "Name" validieren, damit sie einen Wert enthalten. Das Feld Nacht darf nur eine numerische Zahl annehmen.Javascript validieren Textfeld für numerische und String

Hier ist mein Code

$(document).ready(function() { 
 
    
 
    var emailPattern = /\b[A-Za-z0-9._%+-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b/; 
 
    //var numeric = /^[0-9]+$/; 
 
    var regex = /[0-9]|\./; 
 
     
 
     $(":text, #error").after("<span>*</span>"); 
 
     $("arrival_date").focus(); 
 
     
 
    $(document).on("click", "#submit", function (e) { 
 
     
 
     var valid = true; 
 
     
 
     if ($("#name").val() === "") { 
 
      $("#name").next().text("This field is required.").css({ 
 
       "color": "#FF0000", 
 
       "font-size": "13px" 
 
      }); 
 
      valid = false; 
 
     } 
 
     else { 
 
      
 
      valid = true; 
 
     } 
 
     
 
     if ($("#nights").val() === "") { 
 
      valid = false; 
 
      $("#nights").next().text("This field is required.").css({ 
 
       "color": "#FF0000", 
 
       "font-size": "13px" 
 
      }); 
 
     } else if (!regex.test("nights")) { 
 
      $("#nights").next().text("This field is required.").css({ 
 
       "color": "#FF0000", 
 
       "font-size": "13px" 
 
      }); 
 
      valid = false; 
 
     } 
 
     else { 
 
      valid = true; 
 
     } 
 
ad
<!DOCTYPE html> 
 
<html lang="en"> 
 
<head> 
 
\t <meta charset="UTF-8"> 
 
\t <title>Reservation request</title> 
 
\t <link rel="stylesheet" href="main.css"> 
 
\t <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> 
 
\t <script src="http://code.jquery.com/jquery-latest.min.js"></script> 
 
\t <script src="reservation.js"></script> 
 
</head> 
 
\t 
 
<body> 
 
\t <h1>Reservation Request</h1> 
 
\t <form action="response.html" method="get" 
 
    \t name="reservation_form" id="reservation_form"> 
 
\t \t <fieldset> 
 
     \t <legend>General Information</legend> 
 
     \t <label for="arrival_date">Arrival date:</label> 
 
     \t <input type="text" name="arrival_date" id="arrival_date" autofocus><br> 
 
     \t <label for="nights">Nights:</label> 
 
     \t <input type="text" name="nights" id="nights"><br> 
 
     \t <label>Adults:</label> 
 
     \t <select name="adults" id="adults"> 
 
     \t \t <option value="1">1</option> 
 
     \t \t <option value="2">2</option> 
 
     \t \t <option value="3">3</option> 
 
     \t \t <option value="4">4</option>   \t \t   \t \t   \t \t 
 
     \t </select><br> 
 
     \t <label>Children:</label> 
 
     \t <select name="children" id="children"> 
 
     \t \t <option value="0">0</option> 
 
     \t \t <option value="1">1</option> 
 
     \t \t <option value="2">2</option> 
 
     \t \t <option value="3">3</option> 
 
     \t \t <option value="4">4</option>   \t \t   \t \t   \t \t 
 
     \t </select><br>   \t 
 
\t \t </fieldset> 
 
\t \t <fieldset> 
 
     \t <legend>Preferences</legend> 
 
     \t <label>Room type:</label> 
 
\t \t \t <input type="radio" name="room" id="standard" class="left" checked>Standard&nbsp;&nbsp;&nbsp; \t   \t 
 
\t \t \t <input type="radio" name="room" id="business" class="left">Business&nbsp;&nbsp;&nbsp; 
 
\t \t \t <input type="radio" name="room" id="suite" class="left last">Suite<br> 
 
     \t <label>Bed type:</label> 
 
\t \t \t <input type="radio" name="bed" id="king" class="left" checked>King&nbsp;&nbsp;&nbsp; 
 
\t \t \t <input type="radio" name="bed" id="double" class="left last">Double Double<br> 
 
\t \t \t <input type="checkbox" name="smoking" id="smoking">Smoking<br> 
 
\t \t </fieldset> \t \t 
 
\t \t <fieldset> 
 
    \t \t <legend>Contact Information</legend> 
 
    \t \t <label for="name">Name:</label> 
 
\t \t \t <input type="text" name="name" id="name"><br> 
 
     \t <label for="email">Email:</label> 
 
     \t <input type="text" name="email" id="email"><br> 
 
\t \t \t <label for="phone">Phone:</label> 
 
\t \t \t <input type="text" name="phone" id="phone" placeholder="999-999-9999"><br> 
 
\t \t </fieldset> 
 

 
\t \t <input type="submit" id="submit" value="Submit Request"><br> 
 

 
\t </form> 
 
</body> 
 
</html>

AKTUALISIERT Kodex.

$(document).ready(function() { 

var emailPattern = /\b[A-Za-z0-9._%+-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b/; 
//var numeric = /^[0-9]+$/; 
var regex = /[0-9]|\./; 

    $(":text, #error").after("<span>*</span>"); 
    $("arrival_date").focus(); 


function isNumeric(n) { 
    return !isNaN(parseFloat(n)) && isFinite(n); 
} 
$(document).on("click", "#submit", function (e) { 

    var valid = true; 

    if ($("#name").val() === "") { 
     $("#name").next().text("This field is required.").css({ 
      "color": "#FF0000", 
      "font-size": "13px" 
     }); 
     valid = false; 
    } 

    if ($("#nights").val() === "") { 
     valid = false; 
     $("#nights").next().text("This field is required.").css({ 
      "color": "#FF0000", 
      "font-size": "13px" 
     }); 
    } else if (isNumeric("#nights")) { 
     $("#nights").next().text("This field is required.").css({ 
      "color": "#FF0000", 
      "font-size": "13px" 
     }); 
     valid = false; 
    } 

    if (valid === false) 
     e.preventDefault(); 

});  }); 

Ich hüpfte, dass jemand mir

+0

Wenn Ihre Frage dreht sich alles um js, bitte, entfernen Sie alle unnötigen Code, wie CSS, es macht die Frage schwieriger zu lesen –

+0

Ich entfernen Sie einfach die CSS. Können Sie mir bitte helfen? – Jabateh

Antwort

1

helfen könnten Sie Funktionen vorhandenen können Sie überprüfen, ob eine Eingabe numerisch ist (aus here):

function isNumeric(n) { 
    return !isNaN(parseFloat(n)) && isFinite(n); 
} 

und Sie können verwenden HTML5's input type number:

<input type="number" min="1" max="5"> 

Ihre aktuelle Regex wird nicht funktionieren, da sie für jeden String, der irgendeine Art von Zahlen enthält, wahr zurückkehrt, was nicht das beabsichtigte Verhalten ist.

Ihre Verwendung der Variablen valid ist auch falsch: Wie Ihr Code jetzt ist, wird Ihre Formulareingabe als gültig zurückgegeben, wenn #nights ordnungsgemäß validiert ist - es ignoriert das Ergebnis der Eingabe Ihres Namens.

+0

Also, wie kann ich es beheben, so würde es nicht die Eingabe des Namens ignorieren – Jabateh

+0

@Jabateh Entfernen Sie die 'else' Zeilen, wo Sie' valid = true; '. 'valid' ist am Anfang wahr, also ohne else-Verzweigungen ist es falsch, wenn eine Ihrer Validierungen fehlgeschlagen ist (und nicht in' true' überschrieben werden). –

+0

Entschuldigung, ich bin neu in Javascript. Ich habe getan, was Sie mir gesagt haben, aber wenn ich nur einen String-Wert (zB: a oder b oder th) im Textfeld "Nights" eingegeben habe, geben Sie einen Wert in das Textfeld "name" ein und klicken auf "submit". Es akzeptiert es. Aber was ich wirklich will, ist numerisches Zahl ein Wörter zu akzeptieren. Ich aktualisiere nur den Code, wo es UPDATED Code sagte. Kannst du bitte, sieh es dir an und sag mir, was ich falsch mache. – Jabateh

Verwandte Themen