Проверьте изменение значения метки - PullRequest
0 голосов
/ 30 марта 2011
<label id="error_msg"></label>

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

Кроме того, я хочу проверить, пустой ярлык или нет. Если метка пуста, предупреждение не должно поступать.

Я написал код, но он как-то не работает

$("#error_msg").change(function () {
    alert('hi');
});

Помогите, ребята.

Ответы [ 5 ]

1 голос
/ 30 марта 2011

Я еще не смог проверить это, но, если вы измените свою метку с помощью JavaScript, вы не можете вручную запустить change ()

Например

$("#error_msg").text("hello").change();
0 голосов
/ 30 марта 2011

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

$('#account').validate({
    rules:{
            username: {required: true},
            password: {required: true},
            email: {required: true, email: true},
            fullname: {required: true}},
    messages: {
            username: "Category name is required",
            password: "Password is required",
            fullname: "Full Name is required",
            email: "Valid email is required"
        },      
    errorPlacement: function(error, element){
            $(element).each(function (){
            $(this).parent('td').find('p.error').html(error);
        });
}})     

И HTML-код выглядит следующим образом

    <td><input type="text" name="username" value="<?php echo $user['username']; ?>" size="40"/>
    <p class="error"></p>
    </td>

Теперь, если вы планируете ALERT сообщение об ошибкетогда

    errorPlacement: function(error, element){
            var errors = new Array();
            $(element).each(function (){
            $(this).parent('td').find('p.error').html(error);
            errors.push(error);
        });
        alert(errors.join(" "));
    }
0 голосов
/ 30 марта 2011

Метод jQuery change() работает только с определенными элементами, и label не является одним из них.

http://api.jquery.com/change/

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

0 голосов
/ 30 марта 2011

Событие изменения не запускается, если вы изменяете текст / значение элемента с помощью JavaScript - это происходит только тогда, когда пользователь что-то меняет (скажем, текст на входе или выбранный элемент на выберите).

Если вы управляете кодом, который устанавливает текст вашей метки, вы можете написать пользовательскую функцию, которая как устанавливает текст, так и запускает ваш «обработчик событий», и вызывать эту функцию всякий раз, когда вы хотите изменить текст #error_msg. :

function set_error_msg(txt)
{
    $('#error_msg').text(txt);
    if(txt)
    {
        //There's text in the label - show your alert...
    }
}

Но если изменение происходит откуда-то еще (код вне вашего контроля), вам придется запускать цикл, который проверяет каждые XXX секунды, чтобы увидеть, изменился ли текст - процесс, известный как Ожидание при занятости, и как правило, считается плохой вещью ...

Надеюсь, это поможет!

0 голосов
/ 30 марта 2011

Вам необходимо следить за изменениями Dom для метки. Проверьте простой в использовании плагин jQuery на http://james.padolsey.com/javascript/monitoring-dom-properties/

Если вы пытаетесь проверить, я настоятельно рекомендую использовать плагин проверки http://bassistance.de/jquery-plugins/jquery-plugin-validation/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...