3

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>

我想要一个功能,如果用户输入Nothingie ('')textbox并将光标移到外面,textboxPostback不应触发。目前,即使在onblur事件返回后它也会被触发false

4

3 回答 3

4

如果文本框值为空,您可以TextChanged按以下方式抑制事件 -

  • 删除 onblur 功能并使用 onchange 代替。
  • 在 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;
    }
    

试试上面的代码,让我知道它是否有效。

于 2012-10-10T10:47:05.333 回答
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 文件,请在调用 js 文件之前更改document.getElementById('txtNumber')document.getElementById(txtNumberClientID)并在您的 aspx 页面中插入以下脚本标记:

<script type="text/javascript">
    window.txtNumberClientID='<%= txtNumber.ClientID %>';
</script>

让我知道这个是否奏效

于 2012-10-10T06:36:59.347 回答
1

您可以在 jquery 中使用以下代码

 <script>
    $('[id$=TextBox1]').live('blur', function (e) {
        if ($('[id$=TextBox1]').val() == '') {
            alert('empty');
            e.preventDefault();
            return false;
        } else {
            alert('fillled');
        }
    });
</script>

试试这个代码,希望它对你有用......

于 2012-10-10T07:04:22.330 回答