Как мы можем предотвратить действие кнопки "Отправить" в MVC3?

Я столкнулся с проблемой с кнопкой отправки в виде бритвы mvc34. Я динамически добавил строку в jQuery для веб-сетки, которая содержит одну кнопку отправки для вставки данных строки в базу данных. Я хочу проверить текстовое поле строки, если пустое всплывающее окно оповещение и остановка действия. Когда я пытался писать так

$('#btnInsert').click(function()
{
 if ($('#tbStudentName').val() == '') {
               alert('Please enetre!');
                           return false;
            } 
});

Это событие вообще не запускается в jQuery.Можем ли мы вызвать динамически созданное событие щелчка клиента кнопки отправки в jQuery, как описано выше? Я написал так

function InsertClick(button) {
        if ($('#tbStudentName').val() == '') {
           alert('Please enetre!');
                       return false;
        }        
    }

но все же метод FormAction на стороне контроллера запускается. Может кто-нибудь сказать мне решение для предотвращения действий на стороне сервера?

3 ответа

Или же вы можете использовать кнопку типа ввода, которая по умолчанию не является причиной отправки формы, и если проверка прошла успешно, отправьте форму через

$(this).parents("form").submit();

Вот пример:

<script type="text/javascript">
    $(function () {
        $(".go").click(function () {
            var wrong = true; //fake data
            if (wrong) {
                alert("your value is wrong");
            } else {
                $(this).parents("form").submit();
            }
        });
    });
</script>

@using(Html.BeginForm())
{

    @Html.TextBoxFor(x=>x.CompanyName)
    @Html.ValidationMessageFor(x=>x.CompanyName)
    <br/>

    <input type="button" value="go" class="go" />
}

ОБНОВИТЬ

Если вы добавите кнопку динамически, вы должны использовать JQuery Live Event Attach an event handler for all elements which match the current selector, now and in the future.

Вот пример:

<script type="text/javascript">
    $(function () {
        $(".go").live("click", function () {
            var wrong = true; //fake data
            if (wrong) {
                alert("your value is wrong");
            } else {
                $(this).parents("form").submit();
            }
        });

        $(".add").click(function () {
            $("form:first").append("<input type='button' value='go' class='go' />");
        });

    });
</script>

@using(Html.BeginForm())
{

    @Html.TextBoxFor(x=>x.CompanyName)
    @Html.ValidationMessageFor(x=>x.CompanyName)
    <br/>


}


<a class="add" href="#">add button dinamically</a>

Я нашел решение, как это

<input type="submit" value="Insert" onclick="return Validate(this);" />


function Validate(button){
if($('#tbemail').val()==''){
    alert('Can't be blank!');
    return 1==3;
}

}

Вы можете сделать это, привязав событие к самой форме.

$("form").submit(function(e) { e.PreventDefault(); return false; }

Конечно, вы можете добавить некоторые операторы if для предотвращения только при некоторых обстоятельствах.

Другие вопросы по тегам