2011-10-17 160 views
0

我有這樣的simeple jQuery代碼:的jQuery的onChange不觸發事件

​​

這種形式:

<form id="problem_categories" name="problem_category_form" method="post"> 
     <p> 
     Category Name: <input type="text" size="50" name="category_name" id="category_name"></input> 
     </p>     
     <p> 
      <input type="hidden" id="category_problem_id" name="category_problem_id" value="<?php echo $problem_id; ?>" /> 

      <span class="error" id="category_error" style="display:none"> Please Enter Valid Data</span> 
      <span class="success" id="category_success" style="display:none"> Category Added Successfully!</span> 

      <input type="submit" class="button" value="Add Category"></input> 
     </p> 
    </form> 

但由於某種原因,jQuery不會當我在表單域中輸入文本時不會觸發。這裏是一個示例頁面,其中這可能發生在右下角:http://www.problemio.com/problems/problem.php?problem_id=51

+1

它對我來說很好 – Esailija

+0

嗯......大聲笑真的嗎? :)我認爲它在提交時觸發。但不是變化。我認爲這個人打字時會發射。所以我可以通過查看他們在表單上寫下的內容來幫助他們找到他們正在尋找的物品。 – GeekedOut

+0

也許你需要關鍵事件..一旦你離開元素,更改只會觸發 – Esailija

回答

2

使用KEYUP代替:

$('#category_name').keyup(function() 
{ 
    alert('Handler for .change() called.'); 
    var category = $("#category_name").val();  
}); 
2

您的代碼正在工作,change事件將不會觸發,直到文本框失去焦點。

您可以嘗試'keyup'事件。

1

這件怎麼樣?

$(function() { 
    cat_name = document.getElementById('category_name'); 
    $(cat_name).bind({ 
     keyup : function() { 
      alert('Handler for .change() called.'); 
      var category = $("#category_name").val(); 
     } 
    }); 
}); 
+0

爲什麼'document.getElementById' – Petah

+0

當您使用ID而不是class時,它更安全地使用document.getElementById。特別是如果你在頭部標籤中寫腳本。 – Jay