Ich habe eine Webseite mit einem textbox
wie unten -
<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>
Ich möchte eine solche Funktionalität, dass Postback
nicht ausgelöst werden sollte, wenn der Benutzer Nothing
eingibt, d. H. ('') In textbox
und den Cursor außerhalb von textbox
bewegt. Derzeit wird es auch dann ausgelöst, wenn das Ereignis onblur
false
zurückgibt.
2 Antworten
document.getElementById('txtnumber').onchange=function(){
if(this.value!=""){
_doPostBack('txtNumber',this.value);
}
}
Sie können den Wert dann mit dem Eintrag Request ["__ EVENTARGUMENT"] abrufen. Stellen Sie außerdem sicher, dass AutoPostback deaktiviert ist.
BEARBEITEN: In Ihrem txtNumber_TextChanged-Handler zum Beispiel:
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
}
Beachten Sie, dass dies völlig optional ist, da Sie weiterhin mit dem txtNumber-Objekt (wie üblich) auf den Wert von txtNumber zugreifen können.
BEARBEITEN: Beachten Sie, dass Sie beim Abrufen eines Verweises auf das Element document.getElementById die Client-ID als Argument übergeben müssen. Befindet sich das txtNumber-Objekt beispielsweise in einer FormView mit dem Namen FormView1, lautet die resultierende Client-ID FormView1_txtNumber. Eine der folgenden Änderungen an Ihrem Code sollte das Problem beheben:
1) Wenn sich Ihr Javascript in einem Skript-Tag auf der Aspx-Seite befindet, ändern Sie einfach document.getElementById('txtNumber')
in document.getElementById('<%= txtNumber.ClientID %>')
2) Wenn Sie eine externe JS-Datei verwenden, ändern Sie document.getElementById('txtNumber')
in document.getElementById(txtNumberClientID)
und fügen Sie das folgende Skript-Tag in Ihre Aspx-Seite ein, bevor Sie Ihre JS-Datei aufrufen:
<script type="text/javascript">
window.txtNumberClientID='<%= txtNumber.ClientID %>';
</script>
Lassen Sie mich wissen, ob dies funktioniert
Sie können den folgenden Code in jquery verwenden
<script>
$('[id$=TextBox1]').live('blur', function (e) {
if ($('[id$=TextBox1]').val() == '') {
alert('empty');
e.preventDefault();
return false;
} else {
alert('fillled');
}
});
</script>
Probieren Sie diesen Code aus, hoffentlich funktioniert er für Sie ...