我是新來的asp.net mvc和我有一些驗證的aform,我想驗證它在客戶端,所以我寫在JavaScript中的正常腳本 要更多specefic我的問題是返回false(因爲它不應該發送任何數據到服務器,仍然apage,但這不會發生),注意:我測試腳本在正常的HTML文件與JS和工作正常 ,但正如我所說我不熟悉MVC,所以我想知道是否有任何我錯過了它的工作,如果有任何toturial在這specefic點這將是很好的,因爲我注意到在這個地方(沒有地方對於初學者 :); 這是我的代碼片段太窗體驗證在asp.net mvc(使用javascript)
@model registerationex.Models.register
@{
ViewBag.Title = "Create";
}
<h2>Create</h2>
@using (Html.BeginForm()) {
@Html.ValidationSummary(false)
<fieldset>
<legend>register</legend>
<div class="editor-label">
@Html.LabelFor(model => model.name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.name)
<span id="error"></span>
@Html.ValidationMessageFor(model => model.name)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.email)
</div>
<div class="editor-field">
<input class="text-box single-line" data-val="true" data-val-required="The email field is required." id="email" name="email" type="text" value="" onblur="checkuser(email);">
<span id="erroruser"></span>
@Html.ValidationMessageFor(model => model.email)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.age)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.age)
<span id="errorage"></span>
@Html.ValidationMessageFor(model => model.age)
</div>
<p>
<input type="submit" value="Create" onclick="allvalidate();" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
<script>
function allvalidate() {
var validated = true;
if (!validate()) validated = false;
if (!checkAge(age)) validated = false;
if (!checkuser(email)) validated = false;
return validated;
}
function validate() {
var txtf = document.getElementById('name');
if (txtf.value == 0 || txtf.value == null) {
document.getElementById('error').innerText = ('you must enter firstname');
document.getElementById('error').style.color = 'red';
txtf.focus();
return false;
}
else {
document.getElementById('error').innerText = ('');
return true;
}
}
function checkAge(input) {
if (input.value < 18 || input.value > 70) {
document.getElementById('errorage').innerText = ('age must be from 18 :70');
document.getElementById('errorage').style.color = 'red';
return false;
}
else {
document.getElementById('errorage').innerText = ('');
return true;
}
}
function checkuser(input) {
var pattern = '^[a-zA-Z]+$';
if (input.value.match(pattern)) {
document.getElementById('erroruser').innerText = '';
return true;
}
else {
document.getElementById('erroruser').innerText = ('enter valid email');
document.getElementById('erroruser').style.color = 'red';
return false;
}
}
</script>
感謝您的答案和反彈,我也只是想知道你的東西。我知道服務器驗證不是可選的,所以我想添加一個客戶端,除此之外,通過減少與服務器的連接來提高性能,所以如果我在模型中使用mvc屬性(這是在服務器或客戶端的驗證工作)並感謝您的電子郵件模式通知,請注意,這只是瞭解驗證,並且我想編寫簡單的模式來接受單詞並將其命名爲僅電子郵件@Stephen Muecke – user4833581
首先,如果您已包含必需的腳本('jquery- {版本} .js','jquery.validate.js'和'jquery.validate.unobtrusive.js'),並且沒有禁用客戶端驗證,那麼您將使用驗證獲得**客戶端和服務器端驗證屬性。這是MVC的一個很好的特性,所以不要忽略它。 –
接下來,'@ Html.LabelFor(model => model.email)'將生成一個帶有「email」文本的'