Нужно нажать кнопку Отправить дважды-снова...
Я знаю, что это было поднято много раз на многих сайтах, но попытка всех решений до сих пор не сработала. Мое приложение берет код и ищет пароль для этого кода. Он не возвращает пароль при первом щелчке, но делает это при втором щелчке. В этой функции я устанавливаю текст на метке, чтобы знать, что функция выполняется в первый раз, просто ничего не помещается в буфер обмена. Вот код (обрезанный вниз):
CLIENT SIDE: <%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="password.aspx.cs" Inherits="SupportTools.OTPW.password" %> <%@ Register TagPrefix="obout" Namespace="Obout.Interface" Assembly="obout_Interface" %> <asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server"> <script type="text/javascript"> function ButtonOnClick() { var textArea = document.createElement("textarea"); textArea.value = document.getElementsByName("ctl00$MainContent$thePass")[0].value; document.body.appendChild(textArea); textArea.select(); document.execCommand("copy"); document.body.removeChild(textArea); } <table style="font-family:'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', 'Arial', 'sans-serif'"> <tr> <td><obout:OboutButton runat="server" ID="btnCopy" Text="Double Click to Copy Password" OnClick="txtInput_TextChanged"></obout:OboutButton></td> <td><obout:OboutTextBox runat="server" ID="txtInput" Width="40" MaxLength="3"></obout:OboutTextBox></td> </tr> </table> </asp:Content> CODE BEHIND: Protected void Page_Load(object sender, EventArgs e) { if (! Page.IsPostBack) { if (!checkGroupAuth()) { Response.Redirect("https://foo.bar.com/authFailed.aspx"); } } } protected void txtInput_TextChanged(object sender, EventArgs e) { string strLookup = txtInput.Text; if (strLookup.Length < 3) { return; } string thePassword = ""; string ver = ""; # CODE TO LOOKUP THE PASSWORD IS DELETED HERE txtPW.Text = thePassword; thePass.Value = thePassword; lblMessage.Text = "The " + ver + " password for " + txtInput.Text + " has been copied to your clipboard."; ScriptManager.RegisterOnSubmitStatement(btnCopy, this.GetType(), "ButtonClicked", "ButtonOnClick()"); }
Что я уже пробовал:
- В какой-то момент я использовал панель обновления. Наличие этого в или удаление, кажется, не имеет никакого влияния
- Я уверен, что это связано с жизненным циклом страницы, но сколько бы рекомендаций я ни пробовал, я все равно не могу понять этого.
Любая помощь будет очень признательна.
Richard Deeming
Вы пробовали использовать встроенный TextBox
контроль, чтобы исключить ошибку в управлении Obout?
Member 13749768
Да, в какой-то момент я избавился от всех элементов управления Obout, чтобы исключить их.
ZurdoDev
Просто поместите в него точки останова, отладьте его и выясните, что происходит.