为什么“;e.preventDefault()"以及“;return false”;禁用帖子

Why does "e.preventDefault()" and "return false" disable the post?

本文关键字:false return quot preventDefault 为什么 以及      更新时间:2023-09-26

我今天遇到了一个问题。我已经解决了。我启发式地解决了它,但我想要科学的解释(我们不应该是程序员,也应该是科学的人:)

以下是我MVC项目的初始视图代码:

    //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()return false如何以及为什么阻止发布?你推荐任何一本提到这类问题的书吗?提前谢谢。

registerButton是提交按钮,提交的行为是将表单的数据发布到表单标记中提到的操作。若你们并没有在表单标签中提到任何动作属性,那个么它将点击相同的get动作的post-action。

event.prventDefault()并返回false将停止您的帖子返回或进一步的事件。