Je sais que des questions similaires ont déjà été posées auparavant, mais je n'en ai pas vu une avec certaines des exigences ci-dessous.Désactiver le bouton avec jQuery tout en continuant à déclencher l'événement côté serveur
Dans mon balisage, j'ai un div qui contient un champ de saisie et un bouton ASP.NET. Le bouton dispose d'un gestionnaire d'événement OnClick côté serveur qui effectue des actions diverses. travail.
Voici le balisage:
<div id="contactForm">
<input type="text" id="email" runat="server" class="email" name="Email" placeholder="Email *" />
<asp:Button ID="plhButton" class="submit-btn" runat="server" OnClick="Submit_Click" Text="Request Information" />
</div>
et le gestionnaire d'événements:
protected void Submit_Click(object sender, EventArgs e)
{
if (Page.IsValid)
{
EmailPost();
//Do other stuff
}
}
Je voudrais également les éléments suivants:
- Désactiver le bouton pendant 4 secondes
- Change le texte du bouton est désactivé
- Revert le texte du bouton après sa réactivée
- Vérifier la validation
Ceci est mon script pour gérer que:
<script>
jQuery(document).ready(function ($) {
var fewSeconds = 4;
$(".submit-btn").click(function() {
if (Page_ClientValidate()) {
var btn = $(this);
btn.prop('disabled', true);
setTimeout(function() {
btn.prop('disabled', false);
btn.prop('value', 'Request Information');
}, fewSeconds * 1000);
btn.prop('value', 'Sending...');
}
});
});
</script>
Tout fonctionne très bien, sauf que la désactivation du bouton empêche mon événement côté serveur de tir. Donc, j'ai ajouté UseSubmitBehavior = « false » à mon bouton:
<asp:Button ID="plhButton" class="submit-btn" runat="server" OnClick="Submit_Click" Text="Request Information" UseSubmitBehavior="false" />
Maintenant, l'événement se déclenche du côté du serveur normalement, mais le code dans le script (c.-à-désactiver le bouton, basculer le texte du bouton) ne fonctionne que la première fois que le bouton est cliqué.
Des idées pour faire fonctionner le code de script plus d'une fois?
N'êtes-vous pas soumettez une forme si le code JavaScript est inutile car dès que la page est soumise tout ce qui arrête l'exécution de code. – epascarello
essayez d'utiliser le gestionnaire de scripts dans le code de votre serveur –
@epascarello Bon point! J'ai remplacé '$ (document) .ready' par la fonction' pageLoad() 'et il semble fonctionner maintenant. Merci de me pointer dans la bonne direction :) – mustang888