CustomValidator с функцией js не работает

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

js-функция:

 <script type="text/javascript">
    function clientValidate(sender, args) {
        if (args.Value.length < 5 ||args.Value.length > 30) {
            args.IsValid = false;
        }
    }
</script>

asp-поля:

<asp:TextBox ID="tbPassword1" runat="server" TextMode="Password"></asp:TextBox>
<asp:CustomValidator ID="CustomValidatorPassLength" runat="server" display="Dynamic"     ControlToValidate="tbPassword1" ClientValidationFunction="clientValidate" ErrorMessage="Slaptažodis turi būti nuo 5 iki 30 simbolių ilgio." ForeColor="Red"></asp:CustomValidator>

Спасибо и извините!


person Karolis Semaška    schedule 04.02.2014    source источник
comment
Вы хотите запустить функцию проверки, когда текстовое поле пусто? или вообще не работает?   -  person Zaki    schedule 04.02.2014
comment
из пустого текстового поля защищает валидатор обязательного поля, я хочу запустить функцию js, когда tbPassword1.text.length меньше 5 и более 30 символов.   -  person Karolis Semaška    schedule 04.02.2014


Ответы (1)


Пользовательский валидатор ASP срабатывает только тогда, когда пользователь пытается отправить веб-форму нажатием кнопки и т. д. Если вы хотите запустить проверку во время события на стороне клиента, вам придется использовать Javascript, а не серверный элемент управления ASP.

См. демонстрацию JS Fiddle, чтобы узнать, что можно сделать. Код ниже.

HTML

<input type="text" class="password" id="mytextbox"></input><span class="errormsg">Password length invalid</span>

JQuery/JavaScript

$(function(){
    // This is to add the "On Change" event to your textbox.
    $('#mytextbox').change(function(){
        if(!validateFunction($(this))){
            $(this).next('.errormsg').fadeIn({duration: 400});
        } else {
            $(this).next('.errormsg').fadeOut({duration: 100});
        }
    });
})

// This is the function that validates your checkbox. It returns true or false.
function validateFunction(obj){
    if(obj.hasClass('password')){
        var txt = obj.val();
        return (txt.length > 5 && txt.length <= 30);
    }
};
person Lopsided    schedule 04.02.2014
comment
Спасибо за ответ! :) - person Karolis Semaška; 04.02.2014
comment
@KarolisSemaška не проблема! не стесняйтесь отмечать ответ как правильный, если он помог. Спасибо! - person Lopsided; 05.02.2014