【问题标题】:Check label value change检查标签值变化
【发布时间】:2011-07-25 20:04:30
【问题描述】:
<label id="error_msg"></label>

现在,每当error_msg 的值发生变化时,我想提醒一条消息,请填写文本框

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

我写了代码,但它不工作

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

帮助大家。

【问题讨论】:

  • 一方面,您使用标签的方式错误:) 尝试使用 span 或 p 标签。其次,由于您没有更改任何内容,因此不会出现警报。或者你有改变标签文本的代码吗?
  • @corroded: 标签将使用其他代码更新
  • 请同时显示代码。这真的会改变标签吗?
  • 您要验证吗??
  • @corroded: 这是通过 jQuery Validation 插件完成的

标签: javascript jquery validation dom


【解决方案1】:

您需要监控标签的 Dom 更改。在http://james.padolsey.com/javascript/monitoring-dom-properties/查看易于使用的 jQuery 插件

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

【讨论】:

    【解决方案2】:

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

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

    change 事件在元素值改变时发送到元素。此事件仅限于输入元素、文本框和选择元素。

    【讨论】:

      【解决方案3】:

      如果您通过 JavaScript 更改元素的文本/值,则不会触发 change 事件 - 它仅在 用户 更改某些内容(例如输入中的文本或一个选择)。

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

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

      但如果更改来自其他地方(您无法控制的代码),则您必须启动一个循环,每隔 XXX 秒检查一次以查看文本是否已更改 - 这个过程称为忙等待,并且通常被认为是一件坏事......

      希望这会有所帮助!

      【讨论】:

        【解决方案4】:

        我还不能对此进行测试,但假设您正在使用 JavaScript 更改标签,您是否可以不手动触发 change()

        例如

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

        【讨论】:

        • 这是我采用的解决方案。我自己用 JavaScript 更新标签的值,需要触发 change 事件,这成功了!
        【解决方案5】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-04-18
          • 2023-04-06
          • 2019-07-24
          • 2022-01-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-12-20
          相关资源
          最近更新 更多