if 语句导致回调

if-statement causes callback

我有一个 jquery if 语句导致不需要的回调。这是有问题的代码:

JQuery:

function test() {
    if ($('#' + '<%= tbNewRecipient.ClientID%>').val().length() < 1) {
        //TODO: add stuff
    }
    return false;
}

ASPX:

<asp:Button ID="btnAddRecipient" runat="server" Text="+" ToolTip="Add Recipient" CssClass="narrow_button" UseUbmitBehaviour="false" CausesValidation="false" OnClientClick="return test();"/>
<div id="divAddRecipient" style=" color:black; display:inline;" runat="server">
    <asp:TextBox ID="tbNewRecipient" runat="server" Visible="true"></asp:TextBox>
</div>  

这将导致不需要的回调。当我使用这个简单的 alert-window 时,它在没有回调的情况下工作:

function test() {
    alert($('#' + '<%= tbNewRecipient.ClientID%>').val());
    return false;
}

为什么我会收到回调,我该如何避免?

不是.length(),只是.length。给你添麻烦了。

$('#' + '<%= tbNewRecipient.ClientID%>').val().length
// -------------------------------------------------^

当您使用 .length() 时,它不是对象的 属性 或方法,它会引发错误,使 return false 无法执行。所以才会引起回调!

注意: .length 是一个 属性,而不是一个方法。希望回答!