2017-11-28 3 views
-1

Aus meiner Sicht habe ichForm Validation in ASP MVC

@using (Html.BeginForm(null,null,FormMethod.Post, new {onsubmit="return 
validateForm(this);", name = "frm", id = "frm" })) 

und in meiner JS-Datei habe ich diesen Code

function validateForm(form) { 
alert("Called") 
var x = form[model.username].value; 
if (x == "") { 
    alert("Name must be filled out"); 
    return false; 
} 
} 

Wenn ich in der JS nur eine Warnung verwenden, funktioniert es. Wenn ich jedoch das Formular übergebe, wird der Rest der Daten gesendet, selbst wenn der Benutzername leer ist. Bin mit ASP MVC 5

Ideen bitte?

+1

Werden immer noch Warnungen angezeigt? Gibt es einen Fehler in der Debugging-Konsole des Browsers? Wenn Sie dies im Browser debuggen, was ist der Wert von 'x'? – David

+0

Uncaught ReferenceError: Modell ist nicht definiert bei validateForm at HTMLFormElement.onsubmit – user2904400

+0

Dann ist Ihre 'Modell' Variable nicht definiert. Versuchen Sie serverseitigen Code in Ihrem clientseitigen Code zu verwenden? Was genau erwarten Sie, dass 'model.username' in diesem Kontext ist und warum? Wenn Sie versuchen, den Wert einer Eingabe in Ihrem JavaScript-Code zu ermitteln, was ist diese Eingabe? – David

Antwort

0

Nehmen wir an, model.username enthält "johndoe123". Dieser Wert wird dann verwendet, was bedeutet, dass Sie tatsächlich form["johndoe123"].value anfordern, von dem ich denke, dass es ziemlich unwahrscheinlich ist, einen Wert zurückzugeben. Es kann sogar einen Fehler verursachen, insbesondere wenn entweder model oder model.username nicht definiert sind.

Sie bedeutete wahrscheinlich ein Formularfeld anzufordern, die name = „username“ oder so ähnlich hat, also werde ich ein Beispiel geben, wie das zu tun:

var form = document.getElementById("theForm"); 
 
console.log(form); 
 
console.log(form["username"]); 
 
console.log(form["username"].value);
<form id="theForm"> 
 
    <input type="text" name="username" value="something"> 
 
</form>