![](/img/trans.png)
[英]e.preventDefault() prevents the default behavior, but return false not. Why?
[英]Why does “e.preventDefault()” and “return false” disable the post?
我今天遇到了一個問題。 我已經解決了 我試探性地解決了這個問題,但是我需要科學的解釋(我們不應該是程序員,也不應該是科學人:))
這是我的MVC項目的初始View代碼:
//shortened for brevity
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<fieldset>
<div class="editor-label">
@Html.LabelFor(model => model.UserName)
</div>
<div class="editor-field">
@Html.TextBoxFor(model => model.UserName, new { onkeyup = "InputToLower(this);" })
@Html.ValidationMessageFor(model => model.UserName)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.UserPassword)
</div>
<div class="editor-field">
<input type="password" name="password1" id="password1" />
</div>
<div class="editor-label">
<label for="male">Lütfen şifrenizi tekrar giriniz: </label>
</div>
<div class="editor-field">
<input type="password" name="password2" id="password2" />
</div>
<div class="editor-label">
@Html.LabelFor(model => model.UserEmail)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.UserEmail)
@Html.ValidationMessageFor(model => model.UserEmail)
</div>
<p>
<input type="submit" id="registerButton" value="Kayıt Ol" />
</p>
</fieldset>
}
<script type="text/javascript">
$(function () {
$("#registerButton").click(function (e) {
// e.preventDefault();
var errorSummary = $('.validation-summary-errors');
if (errorSummary.length == 0) {
$('#listError').remove();
$('<div class="validation-summary-errors"></div>').insertAfter($('.validation-summary-valid'));
$(".validation-summary-errors").append("<ul id='listError'><li>0 karakter giremezsiniz. OSI-122 </li></ul>");
}
else if (errorSummary.length == 1) {
$('#listError').remove();
$(".validation-summary-errors").append("<ul id='listError'><li>You cannot enter more than 20 characters.</li></ul>");
}
//return false;
});
});
</script>
為簡潔起見,代碼被縮短。 當我禁用e.preventDefault()並返回false時 ,發布已完成。 如何以及為什么e.preventDefault()並返回false阻止發布? 您是否推薦任何提及此類問題的書? 提前致謝。
registerButton是提交按鈕,而提交的行為是將表單的數據發布到表單標記中提到的動作。 如果您沒有在表單標簽中提到任何動作屬性,那么它將擊中相同的get動作的后動作。
event.preventDefault()並返回false將停止您的發回消息或其他事件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.