0

可能重复:
防止在 C# 中回发 HtmlButton

这是我的 JavaScript 函数:

<script type = "text/javascript">
    function CheckForEmptySearchBox(id) {
        var index = id.substring(id.length - 1);
        var boxContent = document.getElementById("contentMain__lvTSEntry__txtClientName_" + index).value;
        if (boxContent == "") {
            alert("Please enter search criteria");
            return false;
        }
    }
</script>

和标记:

<asp:Button ID="_btnSearch" runat="server" OnClientClick = "return CheckForEmptySearchBox(this.id)" />

此代码有效,即当 texbox 为空时,消息提示用户输入搜索条件并且 javascript 阻止页面回发。但是,当用户输入文本时,没有消息提示,但页面仍然没有回发。怎么了?

编辑

if (boxContent == "") {
     alert("Please enter search criteria");
     return false;
   }
   else {
     return true;
   }

该页面仍未发回。

4

3 回答 3

2

如果您的意思是要返回 true,则需要从函数中返回 true....

于 2012-09-05T17:54:07.797 回答
1
<script type = "text/javascript">
        function CheckForEmptySearchBox(id) {
            var index = id.substring(id.length - 1);
            var boxContent = document.getElementById("contentMain__lvTSEntry__txtClientName_" + index).value;
            if (boxContent == "") {
                alert("Please enter search criteria");
                return false;
            }
else{ return true;}
        } 

您要求返回 onclientclick 函数,并且当文本框具有值时不返回任何值,这就是它卡住的原因

  <asp:Button ID="_btnSearch" runat="server" OnClientClick = "return CheckForEmptySearchBox(this.id)" />
于 2012-09-05T17:57:26.110 回答
1

如果验证通过,您会忘记返回 true:

function CheckForEmptySearchBox(id) {
        var index = id.substring(id.length - 1);
        var boxContent = document.getElementById("contentMain__lvTSEntry__txtClientName_" + index).value;
        if (boxContent == "") {
            alert("Please enter search criteria");
            return false;
        }

     return true; //<--you forgot this
    } 
于 2012-09-05T17:57:49.147 回答