为什么javascript忽略文本框默认文本的更改

why javascript ignores changes in default text of the textbox?

本文关键字:文本 默认 为什么 javascript      更新时间:2023-09-26

我不明白为什么javascript忽略了文本框默认文本的变化?

更多细节:文本框的默认文本为"Search"。当客户端尝试提交带有默认文本的搜索表单时,它应该返回false并将焦点放回文本框。

<asp:Panel CssClass="search rnd" ID="SearchBox" runat="server" DefaultButton="btnSearch">
    <asp:TextBox ID="txtSearch" runat="server" ValidationGroup="searchForm" MaxLength="100" CssClass="text" Text="Search" onfocus="if ( this.value == 'Search') { this.value = ''; }" onblur="if ( this.value == '' ) { this.value = 'Search'; }"></asp:TextBox>
    <asp:Button ID="btnSearch" runat="server" ValidationGroup="searchForm" CssClass="btn-search" ToolTip="Search the Website" OnClick="btnSearch_Click" OnClientClick="if ( document.getElementById('<%= txtSearch.ClientID %>').value = 'Search') { document.getElementById('<%= txtSearch.ClientID %>').style.background = 'yellow'; document.getElementById('<%= txtSearch.ClientID %>').focus(); return false; } " />
    <asp:RequiredFieldValidator CssClass="hdn rf" ID="RequiredFieldValidator1" ControlToValidate="txtSearch" runat="server" ErrorMessage="*"></asp:RequiredFieldValidator>
</asp:Panel>

谁来帮帮我!

你在分配而不是比较。

变化:if ( document.getElementById('<%= txtSearch.ClientID %>').value = 'Search')

To if ( document.getElementById('<%= txtSearch.ClientID %>').value == 'Search')

你的代码工作得很好,我只是把代码放在一个函数中,并称之为OnClientClick

您还忘记在if语句中使用==而不是=试试这个:

   <asp:Panel CssClass="search rnd" ID="SearchBox" runat="server" DefaultButton="btnSearch">
    <asp:TextBox ID="txtSearch" runat="server" ValidationGroup="searchForm" MaxLength="100" CssClass="text" Text="Search"
     onfocus="if ( this.value == 'Search') { this.value = ''; }" onblur="if ( this.value == '' ) { this.value = 'Search'; }"></asp:TextBox>
    <asp:Button ID="btnSearch" runat="server" ValidationGroup="searchForm" CssClass="btn-search" ToolTip="Search the Website" 
    OnClick="btnSearch_Click" OnClientClick=" validateTextbox()" />
    <asp:RequiredFieldValidator CssClass="hdn rf" ID="RequiredFieldValidator1" ControlToValidate="txtSearch" runat="server"
     ErrorMessage="*"></asp:RequiredFieldValidator>
</asp:Panel>

<script>
    function validateTextbox() {
        if (document.getElementById('<%= txtSearch.ClientID %>').value == 'Search') {
            document.getElementById('<%= txtSearch.ClientID %>').style.background = 'yellow';
            document.getElementById('<%= txtSearch.ClientID %>').focus();
            return false;
        }
    }
</script>