检查标签值的变化

时间:2011-03-30 05:41:20

标签: javascript jquery validation dom

<label id="error_msg"></label>

现在,只要error_msg

的值发生变化,我就要提醒一条消息,请填写文本框

另外,我想检查标签是否为空。如果标签为空,则不应发出警报。

我编写了代码,但它不能以某种方式工作

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

帮帮我们。

5 个答案:

答案 0 :(得分:1)

我还没有能够对此进行测试,但假设您使用JavaScript更改标签,则无法手动触发更改()

例如

$("#error_msg").text("hello").change();

答案 1 :(得分:0)

您需要监控标签的Dom更改。在http://james.padolsey.com/javascript/monitoring-dom-properties/

查看易于使用的jQuery插件

如果您尝试验证,我强烈建议您使用验证插件http://bassistance.de/jquery-plugins/jquery-plugin-validation/

答案 2 :(得分:0)

jQuery change()方法仅适用于某些元素,label不是其中之一。

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

  

更改事件在其值更改时发送到元素。此事件仅限于输入元素,textarea框和选择元素。

答案 3 :(得分:0)

如果通过JavaScript更改元素的文本/值,则不会触发更改事件 - 只有在用户更改某些内容时才会触发更改事件(例如输入中的文本或所选项目中的内容)选择)。

如果您控制设置标签文本的代码,您可以编写一个自定义函数,既设置文本又运行“事件处理程序”,并在您想要更改#error_msg时调用此函数s文:

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

但是如果更改来自其他地方(控制之外的代码),则必须启动一个循环,每隔XXX秒检查一次,以查看文本是否已更改 - 称为忙等待的过程,以及一般认为是坏事......

希望这有帮助!

答案 4 :(得分:0)

我认为,查询验证插件会自动更改错误标签。此外,我有以下脚本进行验证和错误放置。

$('#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(" "));
    }