2012-08-30 17 views
2

我检查了其他代码,它看起来像我只需要添加返回false使其工作。但是,它不工作,因为它仍然回发该页面。如何防止使用javascript回发页面

<asp:Button ID="_btnSearch" Text="Search" 
      onclientclick="CheckForEmptySearchBox()" /> 

<script type = "text/javascript"> 
    function CheckForEmptySearchBox() 
    { 
     var boxContent = document.getElementById 
      ("_ctl0_contentMain__lvTSEntry_ctrl0__txtClientName").value; 
     if (boxContent == null || boxContent == "") { 
      alert("Please enter search criteria"); 

      return false; 
     } 
    } 
</script> 
+0

你有没有考虑使用任何ASP.NET验证控件,具体[RequiredFieldValdiator(HTTP: //msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.requiredfieldvalidator.aspx)? – jrummell

+0

如果您不想使用onClick on server,您为什么会使用?使用html按钮

+0

@jrummell,我试过了,但我遇到了很多麻烦,因为要验证的控件是在ListView控件中。因此,RequiredFieldValue正在验证每个ListViewItem中的文本框。如果你知道更好的方法来隔离验证的效果,那会更好。 – Richard77

回答

5

的OnClientClick正在接受null而不是false因为你没有返回函数调用的结果的来源。

onclientclick="return CheckForEmptySearchBox()" 
+0

您的解决方案非常完美。现在我只是在等待@ jrummell告诉我,有没有一种方法可以在ListView中使用验证控件,而无需在每行中进行验证。 – Richard77

+0

@ Richard77。我的答案可以回答你的问题,但更合适的地方放这个代码是'

'。 –

1

您可以在Form添加全局检查,这可以在后面的代码来完成的:

if (Page.EnableEventValidation) 
    { 
     if (string.IsNullOrEmpty(Page.Form.Attributes["onsubmit"])) 
     { 
      Page.Form.Attributes["onsubmit"] = "return CheckForEmptySearchBox();"; 
     } 
    }