2011-03-30 78 views
0
<label id="error_msg"></label> 

現在,我想提醒消息,請填寫文本框,每當有在error_msg檢查標籤值變化

也很看重變化,我要檢查標籤是否爲空。如果標籤爲空,則警告不應該發生。

我寫的代碼,但它不以某種方式工作

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

幫助球員。

+0

一件事,你正在使用的標籤錯誤方式:)嘗試使用span或ap標籤。其次,由於你沒有改變任何東西,警報不會來。或者你有更改標籤文本的代碼? – corroded 2011-03-30 05:47:08

+0

@corroded:標籤將更新使用其他代碼 – 2011-03-30 05:48:34

+0

也請顯示代碼。這實際上是否改變了標籤? – corroded 2011-03-30 05:50:53

回答

0

jQuery的change()方法只適用於某些元素和label是不是其中之一。

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

變化事件被髮送到當它的值的變化的元件。此事件僅限於輸入元素,textarea框和選擇元素。

0

如果您通過JavaScript改變元素的文本/值的變化事件不會被觸發 - 它只有當用戶改變的東西(比如在選擇在輸入文本,或選擇項目時會發生)。

如果您控制設置標籤文本的代碼,您可以編寫自定義函數,既可以設置文本,也可以運行「事件處理程序」,並在您想要更改#error_msg的文本時調用此函數:

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

但是,如果變化是從別的地方來(代碼的控制之外),你就必須啓動一個循環,檢查每XXX秒,看看文本改變了 - 被稱爲一個過程忙碌的等待,並且通常被認爲是不好的事情...

希望這有助於!

1

我還沒有能夠測試出來,但是假設你改變你的標籤使用JavaScript你能不能手動觸發變化()

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

這是我一起去的解決方案。我正在用JavaScript自己更新標籤的價值,並且需要'change'事件來觸發,而這個技巧呢! – lhan 2014-06-04 18:29:38

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