2013-07-12 2 views
0

Je veux inviter l'utilisateur avec des valeurs possibles (que j'ai stocké dans le tableau JavaScript) à afficher en tant que boutons radio pour choisir si une certaine valeur dans le texte -box est laissée vide et l'utilisateur clique sur 'Enregistrer' le bouton Rad Ribbon Bar de Telerik qui se trouve dans la page maître.Rendre jQuery Dialog en attente de retour ou invite JavaScript permettant html personnalisé

Mon problème est, quand je clique sur Enregistrer, la méthode côté serveur ne attente pour le dialogue jQuery UI pour fermer, j'ai essayé une boucle en disant attendre ici jusqu'à ce que la boîte de dialogue disparaît mais que dopés brusquement & accroché ma page :-(


  • Pour mon scénario, nous importons des données f Depuis l'autre application, vous ne pouvez pas utiliser l'événement on change
  • Nous avons l'exigence suivante: Lorsque vous sauvegardez l'invite de la boîte avec les valeurs disponibles, obtenez la valeur sélectionnée et continuez à enregistrer avec la valeur sélectionnée, donc je ne peux pas ajouter de bouton, cacher et déclencher .cliquez() événement
  • mon client ne peut pas accueillir « return false; » ils veulent juste continuer à sauver

J'ai suivant travail

  1. gestionnaire d'événements côté client est appelé à partir de la page de contenu lorsque le bouton de sauvegarde est appelé
  2. ce qui précède fonction JavaScript contrôlées après si la valeur est vide
  3. Obtenir des valeurs disponibles de côté serveur et le stockage en réseau
  4. créer html et à la volée (le code ci-dessous)

extrait de code 1 (à déclarer div pour le dialogue jQuery UI en page de contenu)

<script src="../Scripts/jquery-1.9.1.min.js" type="text/javascript"></script> 
<script src="../Scripts/JQueryUI/js/jquery-ui-1.10.3.min.js" type="text/javascript"></script> 
<link href="../Scripts/JQueryUI/css/smoothness/jquery-ui.min.css" rel="stylesheet" 
    type="text/css" /> 
<link href="../Scripts/JQueryUI/css/smoothness/jquery.ui.theme.css" rel="stylesheet" type="text/css" /> 

<div id="dialog-confirm" title="Tracking #"> 
    <span style="float: left; margin: 0 7px 20px 0; z-index: 999999 !important"></span> 
    <p> 
    </p> 
</div> 

Code Snippet 2 (feux de fonction côté client lorsque l'événement Click déclenche sur Enregistrer)

function onSave(sender, args) { 
var sButtonText = args.get_button().get_text(); 
if (sButtonText == "Save") { 
    var 
     trackingIDs = $('#<%=_tbPrevtrackerID.ClientID %>').val(), 
     $trackerIDInputControl = $('#<%= tbtrackerID.ClientID %>'), 
     currenttrackerIDValue = $trackerIDInputControl.val(), 
     trackerIDs = trackingIDs.split(',').clean(''), //Extension Method 
     noOftrackerIDsAvailable = trackerIDs.length, 
     markup = 'trackerID is empty : <br/><br/><input type="radio" name="trackerIDGroup" value="" >Leave Empty</input><br/>'; 
    for (var i = 0; i < noOftrackerIDsAvailable; i++) { 
     markup += '<input type="radio" name="trackerIDGroup" value="' + trackerIDs[i] + '">' + trackerIDs[i] + '</input><br/>'; 
    } 

    if (currenttrackerIDValue == '') { 
     $('#dialog-confirm').css({ 'display': 'block' }); 

     $("input:radio[name=trackerIDGroup]").click(function() { 
      $trackerIDInputControl.val($(this).val()); 
      trackerIDChecked = true; 
     }); 

     //Please note, if I'd use following it does work, but I am going to have multiple values 
     //$trackerIDInputControl.val(prompt(markup, trackerIDs[0])); 

     if ($("#dialog-confirm") != null) {    
      $("#dialog-confirm p").html(markup); 
      $("#dialog-confirm").dialog({ 
       resizable: false, 
       height: 300, 
       width: 300, 
       closeOnEscape: false, 
       modal: false, 
       buttons: { 
        "Ok": function() { 
         if ($trackerIDInputControl.val() != '') { 
          $('#dialog-confirm').css({ 'display': 'none' }); 
          $(this).dialog("close"); 
         } 
        }, 
        Cancel: function() { 
         $(this).dialog("close"); 
         $('#dialog-confirm').css({ 'display': 'none' }); 
        } 
       } 
      }).parent().appendTo(jQuery("body form")); 
     } 
    } 
} 
+0

-1 Votre question n'est pas très claire. Qu'est-ce que vous voulez réellement? –

+0

@Walter, je veux deux choses 1er: Lorsque je clique sur Enregistrer, la méthode côté serveur n'attend pas la fermeture du dialogue de l'interface utilisateur jQuery, je veux que la publication côté serveur attende que l'utilisateur ait sélectionné une valeur de jQuery Dialogue Si vous avez déjà connu telerik, il est possible de faire args.set_cancel (true); // args est le paramètre vu sur la première ligne \t mais comment puis-je répliquer l'événement click? sender.click() n'a pas semblé fonctionner pour une raison inconnue – ablaze

+0

2ème: Je veux obtenir la valeur de l'élément sélectionné du groupe de boutons radio que j'ai ajouté dynamiquement au dialogue de jQuery – ablaze

Répondre

1

Je pense que le kit Ajax Control Tool a quelque chose de plus approprié pour vous, s'il vous plaît jeter un oeil à this démo.

+0

+1 pour une solution élégante – ablaze