Пользовательский валидатор срабатывает, но не предотвращает обратную передачу - PullRequest
6 голосов
/ 17 ноября 2011

Я уже видел много вопросов по этому поводу, но я в тупике! Пожалуйста, помогите!

У меня есть customvalidator. Это стреляет, но это не предотвращает обратную передачу. Пожалуйста, помогите мне в этом! Я вижу, что console.log регистрируется до публикации. Но, это отправляет назад так или иначе. Как я могу предотвратить обратную передачу?

Я попытался добавить элемент управления для проверки и проверки пустого текста, равного true. Я также попытался добавить e.preventdefault, который не работал: (

Как я могу предотвратить обратную передачу?

    <script type="text/javascript">
//<![CDATA[
function validateWhyUnlikely(source, args) {
    console.log(1);
    args.isValid = false;
}
//]]>

<asp:TextBox ID="txtWhyUnlikely" runat="server" Rows="4" cols="20"
            CssClass="surveyTextArea" />
<asp:CustomValidator runat="server" ID="cfvWhyUnlikley" ErrorMessage="Please provide a reason since you rated an item as unlikely to provide."
        CssClass="surveyError surveySmallIndent" Display="Dynamic" 
        ClientValidationFunction="validateWhyUnlikely" />
<asp:Button ID="btnSubmit" runat="server" Text="Submit" CssClass="smallSpecial" OnClick="btnSubmit_Click" />


jQuery(document).ready(function () {
    jQuery('#<%= btnSubmit.ClientID %>').click(function (e) {
        if (Page.IsValid == false) {
            console.log(false);
            e.preventDefault();
            return false;
        }
    });
});

Ответы [ 8 ]

6 голосов
/ 17 ноября 2011

Все выглядит нормально, хотя я не уверен, почему вы подключаете функцию Click к кнопке отправки. Я удалил бы это и протестировал бы, поскольку это, возможно, переопределяет поведение по умолчанию.

Кроме того, я думаю, вам нужно использовать заглавную букву IsValid:

args.IsValid = false;
3 голосов
/ 07 июня 2012

Я тоже столкнулся с этой проблемой, я пытался добавить пользовательский валидатор в выпадающий список , к которому было прикреплено событие selectedIndexChange. После того, как я дал неправильное значение для выпадающего меню, я смог увидеть сообщение об ошибке, которое я дал в Custom Validator, но сразу после этого произошла обратная передача.

Однако добавление этого свойства CausesValidation="true" в элемент управления раскрывающегося списка решило мою проблему.

После добавления этого свойства в раскрывающееся меню не происходило обратной передачи при неверном значении.

2 голосов
/ 19 мая 2016

Если это помогает другим людям, у меня была группа проверки, к которой я забыл добавить кнопку.

Обязательно добавьте кнопку, текстовое поле и средство проверки в одну группу проверки для обратной передачи вбыть предотвращенным.

1 голос
/ 28 января 2014

Вы пропускаете ControlToValidate="txtWhyUnlikely"

1 голос
/ 24 мая 2013

Я тоже столкнулся с этой проблемой.

Что я сделал, в процедуре C #, которая была вызвана кнопкой, сверху я добавил

if (IsValid == false)
         return;

Я не мог остановитьсяон выполнял обратную передачу, так что мне показалось, что это единственное решение.

0 голосов
/ 27 июня 2017

Я решил эту проблему, создав переменную:

 Boolean fieldIsValid = true;

, и в пользовательском проверяющем выражении я бы изменил значение, если аргументы не соответствуют действительности:

if(args.IsValid == false)
            {
                fieldIsValid = false;
            }
            else
            {
                fieldIsValid = true;
            }

Тогда,Я также добавил это в метод отправки клика:

protected void submit_Click(object sender, EventArgs e)
        {
            if (fieldIsValid)
            {
                //submit my things
            }
        }
0 голосов
/ 26 октября 2014

0 голосов
/ 29 мая 2013

Размещение этого сообщения может помочь тому, кто ведет себя так же странно.

Изначально у меня была та же проблема, что и в названии этого поста. Я проверил все предложения здесь, но мой код, казалось, был в порядке.

Чтобы исправить это, я заменил свой элемент проверки причины <asp:Button.. на <button... Не уверен, почему это происходит, но рад, что он работает сейчас.

НТН

...