2014-04-19 25 views
0

我在理解爲什麼我開發的代碼沒有在TextArea上註冊Jquery Blur/OnBlur事件,但同一代碼正在爲文本輸入框工作。Textarea上的jquery捕獲事件無法正常工作,但發生在Textbox上

這是在ASP.NET C#,但我已經下降到的jsfiddle內的基本步驟打破了問題 - http://jsfiddle.net/RdSme/

我加了第二個文本框和文本區域,只是爲了測試:

<input id="TxtTest1" type="text" />TextBox Working 
<p/> 

<textarea id="TxtTest2" cols="20" rows="2"></textarea>TextArea Not Working 
<p/> 
<input id="TxtTest3" type="text" /> Empty Textbox 
<p/> 
<textarea id="TxtTest4" cols="20" rows="2"></textarea> Empty TextArea 


$(function() { 
    $('input[id*=TxtTest1]').bind("blur", function() { 
     var risks = {}; 
     risks.Source11 = $("[id*=TxtTest1]").val(); 
     alert("Step 1");  
    }); 
}); 

$(function() { 
    $('input[id*=TxtTest2]').bind("blur", function() { 
     var risks = {}; 
     risks.Source11 = $("[id*=TxtTest2]").val(); 
     alert("Step 1");  
    }); 
}); 

背景。所有輸入字段將在用戶離開輸入框或對單選按鈕或複選框進行更改時將更改發送回數據庫。該代碼適用於asp.net TextBox,即使在DataList中也是如此。理想情況下,我需要一種「模板」方式來捕獲對輸入所做的更改,然後添加用於單選按鈕/複選框和下拉列表的類似模板。

你的幫助會非常讚賞

作爲一個快速跟進的問題;下拉列表,複選框和單選按鈕需要什麼選擇器?

回答

1

您的selector爲textarea不正確。使用:inputhttp://api.jquery.com/input-selector/)或保持簡單並使用元素ID。

嘗試:

$(":input[id*='TxtTest2']").bind("blur", function() { 
    var risks = {}; 
    risks.Source11 = $("[id*=TxtTest2]").val(); 
    alert("Step 2"); 
}); 

OR:

$("#TxtTest2").bind("blur", function() { 
    var risks = {}; 
    risks.Source11 = $("[id*=TxtTest2]").val(); 
    alert("Step 2"); 
}); 

小提琴:http://jsfiddle.net/PTW66/1/

+0

正是我需要的。謝謝。作爲一個快速跟進問題;下拉列表,複選框和單選按鈕需要什麼選擇器? – Sam

+0

@Sam你可以使用':input'。如果您閱讀我在答案中提供的api文檔鏈接,您會看到此內容。 http://api.jquery.com/input-selector/說'選擇所有輸入,textarea,選擇和按鈕元素.' – darshanags

1

因爲您未定位textarea

您只是針對input而不是textarea

你可以簡單地這樣做:

$(function() { 
    $('[id^=TxtTest]').bind("blur", function() { 
     alert("Step 1");  
    }); 
}); 

以上將選擇所有。

爲了定位textarea,你必須做$('textarea[id*=TxtTest2]'),你可以簡化成:$('#TxtTest2'),因爲id是唯一的。

相關問題