我在理解为什么我开发的代码没有在TextArea上注册Jquery Blur / OnBlur事件时遇到问题,但是相同的代码适用于Text输入框。
这是在ASP.NET C#中,但我已将问题分解为JSFiddle中的基本步骤 - http://jsfiddle.net/RdSme/
我添加了第二个文本框和textarea,仅用于测试:
<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中也是如此。理想情况下,我需要一种“模板”方式来捕获对输入所做的更改,然后为单选按钮/复选框和下拉列表添加类似的模板。
非常感谢您的帮助
作为一个快速跟进的问题;下拉列表,复选框和单选按钮需要什么选择器?
答案 0 :(得分:1)
因为您没有定位textarea
。
您只是定位input
而不是textarea
。
你可以这样做:
$(function () {
$('[id^=TxtTest]').bind("blur", function () {
alert("Step 1");
});
});
以上将全部选择。
为了定位textarea,您必须执行$('textarea[id*=TxtTest2]')
,您可以将其简化为:$('#TxtTest2')
,因为ID是唯一的。
答案 1 :(得分:1)
您的selector
textarea不正确。使用:input
(http://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");
});