Почему форма asp.net mvc подает себя при нажатии кнопки при ошибке функции javascript? - PullRequest
0 голосов
/ 11 апреля 2010

Я новичок в asp.net mvc, и работая над этим, я использовал очень простые вещи из asp.net mvc, такие как beginform и т. д.

В этом раунде я использовал много jquery-кодов для проверки на стороне клиента, извлечения данных ajax и других графических работ.

и я использовал комбинации кнопок ввода html и т. Д., А также элементы управления asp.net mvc. Что я заметил, так это то, что всякий раз, когда я нажимаю на элемент управления кнопки, который иногда привязан к событиям jquery oclick, когда возникает ошибка javascript, страница просто запускается и отправляется.

почему это происходит и чего мне здесь не хватает?

мой плохой для глупых вопросов .. спасибо

Обновление

Поработав, думаю, я мог бы узнать, почему ... Может ли это быть потому, что я поместил некоторые обработчики событий jquery в другую функцию и не вернул false?

function eventHandling() {
    //initialize controls
    $(".dobPicker").datepicker({
        changeMonth: true,
        changeYear: true,
        yearRange: '-100:+0'
    });

    $("a#hrefCountry").fancybox({
        'titlePosition': 'inside',
        'width': '75%',
        'height': '75%'
    });

    //Event handlers part
    $("#imgbtnClear").click(function() {
        clearForm("#frmProductRegistration");
        return false; // like this guy weren't there initially <-- ??
    });

А если это было основной причиной, почему? хочу поделиться:)

Ответы [ 3 ]

2 голосов
/ 11 апреля 2010

здесь кажется, что когда вы запускаете imgbtnClear, и из того, что вы говорите, ClearForm завершается неудачно, то его возвращение без false, поэтому кнопка ввода, на которую вы помещаете clear, отправляет форму!, Потому что никогда не возвращает false .

Может быть, если вы сделаете это ...

$("#imgbtnClear").click(function() {
        try{
          clearForm("#frmProductRegistration");
        }catch(e){}

        return false; // like this guy weren't there initially <-- ??
    });
0 голосов
/ 14 апреля 2010

Форма не будет отправлена, только если вы вернете false из функции, связанной с событием onclick, но вы не вернете ее из-за исключения, поэтому она будет отправлена ​​в любом случае.

Что ты возвращаешь? Я думаю, что это не определено, но я не уверен. Вы можете использовать firebug для отладки.

0 голосов
/ 12 апреля 2010

Если в функции clearForm () возникает исключение javascript, выполнение прекращается, и ваш сценарий никогда не «вернет false», что необходимо для предотвращения отправки формы.

Чтобы ваш скрипт всегда "возвращал false", вы можете заключить функцию clearForm () в блок try / finally:

try {
    clearForm("#frmProductRegistration");
}
catch(e){} //so it works in IE
finally {
    return false;
}
...