2010-06-09 35 views
9

In una pagina ho un collegamento; facendo clic su di esso si apre una finestra di dialogo e si imposta un valore casella di testo per quella finestra di dialogo.Perdita del valore della casella di testo sul postback

Tuttavia, dopo aver fatto clic su Invia in quella finestra di dialogo, il valore della casella di testo è nullo.

Link:

<a href="#" onclick="javascript:expand('https://me.yahoo.com'); 
jQuery('#openiddialog').dialog('open'); return false;"> 
<img id="yahoo" class="spacehw" src="/Content/Images/spacer.gif" /></a> 

Script:

<script type="text/javascript"> 
    jQuery(document).ready(function() { 
    jQuery("#openiddialog").dialog({ 
     autoOpen: false, 
     width: 600, 
     modal: true, 
     buttons: { 
      "Cancel": function() { 
       $(this).dialog("close"); 
      } 
     } 
    }); 
}); 
function expand(obj) { 
    $("#<%=openIdBox.ClientID %>").val(obj); 
} 

Dialog:

<div id="openiddialog" title="Log in using OpenID"> 
<p> 
    <asp:Label ID="Label1" runat="server" Text="OpenID Login" /> 
    <asp:TextBox ID="openIdBox" EnableViewState="true" runat="server" /> 
    <asp:JButton Icon="ui-icon-key" ID="loginButton" runat="server" Text="Authenticate" OnClick="loginButton_Click" /> 
    <asp:CustomValidator runat="server" ID="openidValidator" ErrorMessage="Invalid OpenID Identifier" ControlToValidate="openIdBox" EnableViewState="false" OnServerValidate="openidValidator_ServerValidate" /> 
    <br /> 
    <asp:Label ID="loginFailedLabel" runat="server" EnableViewState="False" Text="Login failed" Visible="False" /> 
    <asp:Label ID="loginCanceledLabel" runat="server" EnableViewState="False" Text="Login canceled" Visible="False" /> 
</p> 
</div> 

risposta

7

ho pensato:

devo aggiungere questa riga per aggiungere la finestra di dialogo per la forma, come finestra di dialogo jQuery aggiunge al corpo:

$("#openiddialog").parent().appendTo(jQuery("form:first")); 

Il intero script dovrebbe apparire così:

<script type="text/javascript"> 
jQuery(document).ready(function() { 
    jQuery("#openiddialog").dialog({ 
     autoOpen: false, 
     width: 600, 
     modal: true, 
     buttons: { "Cancel": function() { 
      $(this).dialog("close"); 
     } 
     } 
}); 
$("#openiddialog").parent().appendTo(jQuery("form:first")); 
}); 
function expand(obj) { 
    $("#<%=openIdBox.ClientID %>").val(obj); 
} 

1

Perché si aggiunge # ID prima textbox? Penso che si dovrebbe usare:

function expand(obj) { 
    $("<%=openIdBox.ClientID %>").val(obj); 
} 
+0

per selezionare un elemento basato su id ... se non sbaglio .. anche tu rimuovi l'hash, è un selettore di classe –

+0

Mi dimentico che è JQuery – Kate

+0

Mi dispiace ma cosa è ? – Kate

Problemi correlati