Madhukar Krishna Ответов: 1

Onclientclick не работает в ASP.NET


Уважаемый друг,
У меня есть следующий код JQuery в asp.net веб-форма:-


функция ValidateFields(id) {
$("#Rpt1").find("input[type=text]").each(функция () {
если ($.функция TRIM($(это).функция val()) == ") {
предупреждение("по крайней мере одно текстовое поле пусто");

$(этот).focus(); // фокусировка элемента
возвращать false;
}
возвращать false;

})
}



и дальше asp.net нажмите кнопку у меня есть следующий код:-
<asp:Button ID="BtnSubmit" runat="server" OnClientClick="if
(ValidateFields('BtnSubmit') == false) return(false);"
OnClick="BtnSubmit_Click" Text="Submit" />

Проблема в том, что он всегда запускает событие onclick независимо от того, является ли условие истинным или ложным.

Что я уже пробовал:

Я много чего перепробовал
любить
OnClientClick="ValidateFields('BtnSubmit');"
и
OnClientClick="ValidateFields('BtnSubmit'); return false;"

но ничего не получается.

Пожалуйста помочь.

1 Ответов

Рейтинг:
11

F-ES Sitecore

Ваш "return false" заставляет функцию внутри вашего метода "each" возвращать false, а не функцию ValidateFields возвращать false. В приведенном ниже обновлении я установил переменную isValid, которая обновляется внутренней функцией в "each", и эта переменная затем возвращается из ValidateFields.

<script type="text/javascript">
    function ValidateFields(id) {
        var isValid = true;
        $("#Rpt1").find("input[type=text]").each(function () {
            if ($.trim($(this).val()) == '') {
                alert("At least one textbox is empty");


                $(this).focus(); // focus the element
                isValid = false;
            }
        });

        return isValid;
    }

</script>


Для нескольких типов управления

function ValidateFields(id) {
    var isValid = true;
    $("#Rpt1").find("input[type=text], input[type=file], .Select1").each(function () {
        var el = $(this);
        switch (this.tagName.toLowerCase()) {
            case "input":
                if (el.val() == '') {
                    if(el.attr('type') == 'text')
                        alert("At least one textbox is empty");
                    else if(el.attr('type') == 'file')
                        alert("Select a file");
                    isValid = false;
                }
                break;
            case "select":
                if (el.val() == '0') {
                    alert("Select a value");
                    isValid = false;
                }
                break;
        }
        if (!isValid) {
            return false;
        }
    });

    return isValid;
}


Madhukar Krishna

Привет,
Спасибо, дорогая.Совершенное решение. Можете ли вы дать мне код для остановки в первом текстовом поле, которое пусто?

F-ES Sitecore

Если вы добавите "return false;" после строки "isValid = false;", то это должно разорвать каждый цикл.

Madhukar Krishna

Привет, F-ES Sitecore. У меня есть следующий код, и я хочу, чтобы он остановился для первого из первого типа элемента управления, который пуст:

//Ретранслятор
ВАР метода IsValid = истина;
$("#Rpt1").find("input[type=text]").each(функция () {
если ($.функция TRIM($(это).функция val()) == ") {
предупреждение("по крайней мере одно текстовое поле пусто");
$(этот).focus(); // фокусировка элемента
isValid = false;
возвращать false;
}

})

$("#Rpt1").find(".Select1").each(функция () {
if ($.trim($(this).val()) == '0') {
предупреждение("выберите значение");
$(этот).focus(); // фокусировка элемента
isValid = false;
возвращать false;
}

})

$("#Rpt1").find("input[type=file]").each(функция () {
если ($.функция TRIM($(это).функция val()) == ") {
предупреждение("выберите файл");
$(этот).focus(); // фокусировка элемента
isValid = false;
возвращать false;
}

})
возвращение метода IsValid;


Как это сделать? Я буду благодарен, если вы ответите на этот вопрос!!!

F-ES Sitecore

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

Madhukar Krishna

Отличная Компания! Ты просто гений. Большое вам спасибо! Это работает для меня!