我的网页上有textbox
,如下所示 -
<asp:TextBox ID="txtNumber" runat="server" size="5" MaxLength="9"
AutoPostBack="True" OnTextChanged="txtNumber_TextChanged"
CssClass="txtBoxPage" Style="margin-left: 3px;"
Visible="false" onblur="return [some JS function] false;">
</asp:TextBox>
我想要一个功能,如果用户在Nothing
中输入textbox
即('')并将光标移到textbox
之外,则Postback
不应该触发。目前,即使onblur
事件返回false
,它也会被触发。
答案 0 :(得分:4)
如果文本框值为空,则可以按以下方式隐藏TextChanged
事件 -
在Page_Load -
中添加以下行protected void Page_Load(object sender, EventArgs e)
{
txtNumber.Attributes.Add("onchange", "if(checkEmptyValue(this)) {return false; }");
}
在标记中包含以下JavaScript -
String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ""); };
function checkEmptyValue(o) {
if (o.value == '' || o.value.trim() == '')
return true;
else
return false;
}
尝试上面的代码,让我知道它是否有效。
答案 1 :(得分:2)
document.getElementById('txtnumber').onchange=function(){
if(this.value!=""){
_doPostBack('txtNumber',this.value);
}
}
然后,您可以使用Request [“__ EVENTARGUMENT”]条目检索该值。另外,请务必关闭AutoPostback。
编辑:在你的txtNumber_TextChanged处理程序中,例如:
private void txtNumber_TextChanged handler
{
Response.Write(Request["__EVENTARGUMENT"]);
//Writes the value of the TextBox. Basically, EVENTARGUMENT is the second argument passed when calling _doPostBack
}
请注意,这完全是可选的,因为您仍然可以使用txtNumber对象访问txtNumber的值(这是传统的)。
编辑:请注意,使用document.getElementById检索对元素的引用时,需要传递客户端ID作为参数。例如,如果txtNumber对象位于名为FormView1的FormView中,则生成的客户端ID将为FormView1_txtNumber。对您的代码进行以下修改之一应该可以解决问题:
1)如果您的javascript位于aspx页面的脚本标记中,只需将document.getElementById('txtNumber')
修改为document.getElementById('<%= txtNumber.ClientID %>')
2)如果您使用的是外部js文件,请将document.getElementById('txtNumber')
更改为document.getElementById(txtNumberClientID)
并在调用js文件之前在aspx页面中插入以下脚本标记:
<script type="text/javascript">
window.txtNumberClientID='<%= txtNumber.ClientID %>';
</script>
让我知道这是否有效
答案 2 :(得分:1)
您可以在jquery中使用以下代码
<script>
$('[id$=TextBox1]').live('blur', function (e) {
if ($('[id$=TextBox1]').val() == '') {
alert('empty');
e.preventDefault();
return false;
} else {
alert('fillled');
}
});
</script>
试试这段代码,希望它能为你效果......