modalpopupextender和逗号出现在我的文本框asp.net(modalpopupext

2019-08-20 07:39发布

有些怪异的东西正在发生的事情,我将是用于使用JavaScript在一个很小的窗口中打开另一个网页的数据输入到使用ModalPopupExtender的应用程序。

这似乎很好地工作,但在正常情况下,当我做txtData.Text(在我的模式弹出文本框),它与数据之前一个逗号回来,所以如果你输入“兔子”,它回来的“ ,兔子”。

此外,当我多次使用它,在另一个地方,我可以点击显示它,然后键入“鱼”,它开始回来用一样的东西“兔子,,鱼”

我不知道为什么或如何从这样阻止它...任何想法?

Answer 1:

出于某种原因,它似乎并不如文本框设置为只读发生。

我想有可能是通过显示一个文本编辑给用户,醒目的按键给它,和更新是对用户隐藏的只读文本框一个解决方法。

还是有点混乱,但我不能回滚到五月的发布,因为有在该版本中有我需要避免的ComboBox另一个bug!


更新:

作为一个有点背景的,我有我的模式弹出内部的用户控件(ASCX),因为我需要重新使用。 该ASCX必须处理用户输入本身(包含页面不知道发生了什么事情的控制内),这样当用户点击一个按钮,我做一个回调和处理数据。 如果一个成功的结果返回给客户端回调函数,然后我模拟的包含网页的想法卡嗒“确定”按钮,这实际上是对用户不可见。

我已经改变了我的代码添加一个隐藏,只读文本框,并从原来的文本框中的文本每一次复制到新的文本更改。

    <asp:TextBox runat="server" ID="txtName"></asp:TextBox>

    <asp:TextBox runat="server" ID="txtName" onchange="document.getElementById(this.id + 'RO').value = this.value"></asp:TextBox>
    <asp:TextBox runat="server" ID="txtNameRO" ReadOnly="true" style="display:none;"></asp:TextBox>

然后在回调传值回,而不是获得txtName的价值,我用txtNameRO。

我不认为这会帮助,如果你正在做一个回传,但你可以在回发前添加一个回调像我有。 希望这会帮助别人呢!



Answer 2:

同样在这里。 不知道为什么它发生。 通过面板按键内发起的每个回发增加了逗号和以前的值所有文本字段。

挂钩到TextBox.Text制定者透露,损坏的数据来自POSTDATA集合。 因此,这意味着之前回发ModalPopupExtender破坏数据。

我没有使用的UpdatePanel PS,但经常面板,所以没有与按钮相关联的触发器。

更新:发现的解决方案。

这个问题似乎回滚到AjaxToolKit(五月的发布时走开http://ajaxcontroltoolkit.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=27326 )。



Answer 3:

公正地分享这个解决方案给大家在这个问题上。 尽量不要使用ASP的控制,而不是使用HTML。

*<input type="text" id="txtID" runat="server" class="myClass" />*

这对我来说工作正常。

谢谢,



Answer 4:

我还发现了一个论坛,表明它可能是当有相同名称窗体上的多个控件的HTML标准的行为。 考虑到这一点(并假设没有在AJAX控件中的错误)我周围的编码它是在我的Page_Load中添加以下语句种类每个我的文本框的方式。

串[]瓦尔斯= txtValue.Text.Split(Convert.ToChar( “”)); txtValue.Text =瓦尔斯[vals.Length - 1]; //它出现在我的最新值总是在最后一个项目

由于形式负载按钮事件发生之前,我理清我的领域他们得到与他们的价值观涉及的事件之前。



Answer 5:

我有一个类似的问题,有一个UpdatePanel内一个jQuery对话框。 因为我能在不同的地点看,这个问题是由DOM树中重复造成的。

最后,我发现了一个很简单的解决方案。 我的对话框分配到div,然后打开或关闭的JavaScript,然后运行的代码,这个小和平,以便移除重复:

var count = $(".dialog").length;
for (i = 1; i < count; i++) {
    $(".dialog").first().remove();
}

编辑:事实证明并非如此简单。 最后,我的代码是这样的:

在文件准备(和异步页面调用):

function AddDialog() {

    var dlg = $(".dialog").dialog({ autoOpen: false });
    dlg.parent().appendTo($("form:first"));

    var targetSelector = ".myDialog"; // watch out: can't use ID here!

    if (mustOpenDialog) {

        $(targetSelector).last().remove();  //-- remove last copy

        var dlg = $(targetSelector).dialog({ autoOpen: true });

        var count = $(targetSelector).length;
        for (i = 1; i < count; i++) {
            $(targetSelector).last().remove();
        }
    }

    if (mustCloseDialog) {

        $(targetSelector).dialog("close");
        var count = $(targetSelector).length;
        for (i = 1; i < count; i++) {
            $(targetSelector).first().remove();
        }
    }

}

在我的完整代码,mustOpenDialog和mustCloseDialog在代码隐藏设置。



Answer 6:

我与以前的值回来用逗号隔开了同样的问题。 这似乎是我的OK按钮是更新面板内部,我有它的触发部分以及。 从在UpdatePanel的触发器栏目删除按钮解决了这个问题。

最好的问候 - 托比亚斯



Answer 7:

我的回答是类似于Smarty的。 我的页面看起来像这样...

<UpdatePanel>
    <GridView>
        <Button> <-- These buttons fire modal popup programmatically.
        <Button>
        <Button>
    </GridView>
    <ModalPopup>
    <HiddenField> <-- Dummy target of modal popup.
</UpdatePanel>

此修复程序是将其更改为这个...

<UpdatePanel>
    <GridView>
        <Button> <-- These buttons fire modal popup programmatically.
        <Button>
        <Button>
    </GridView>
</UpdatePanel>
<ModalPopup>
<HiddenField> <-- Dummy target of modal popup.

我不得不注册每个按钮与在gridview的RowDataBound事件使用ScriptManager回发控制。 不利的一面是,我有更多的全回发。 但是,它解决了这个问题。



Answer 8:

这是非常晚的答复,但我在这里记录它,以便其他可能受益。 我的方案

jQuery的对话框中打开用户控制按钮点击。 这个用户控件有它里面更新面板和几个文本框。 第一次打开对话框,它的工作就像魅力。 在随后点击打开的对话框中,我注意到一个奇怪的行为。 我有用户控件(内更新面板)中少数文本框。 在任何一个局部回传,文本框的文本改变current text, current text 。 如果文本框的值fish ,然后在任何部分回发其变更为fish, fish

这样做的原因是,我使用jQuery打开对话框。 我还附加了对话,形成于按钮的点击。

 dlg.parent().appendTo($('form:first'));

因此,在哪里追加到DOM,因此在构建回传数据,随后单击多个用户控制,存在着具有相同ID的一个以上的控制,因此有值,其中使用“”附加 - 逗号。

所以我的解决方案很简单,同时关闭对话框,我只是删除它从DOM

我从下面的链接提示。 在这里张贴供将来参考这里



Answer 9:

我已经成功地实现了基于仁的反应完全破解。 我用一个asp:HiddenField持有我要回发的价值,我用纯HTML的输入框填充它

<asp:HiddenField ID="txt" runat="server"/>
<input type="text" onchange='document.getElementById("<%= txt.ClientID %>").value = this.value;' />

这是更轻的重量比仁的解决方案,你仍然只回发一个服务器控件。

顺便说一句,这是在Ajax工具包非常显著的bug。 您可以投票,在这里就可以发表评论:

CodePlex网站问题

假装你在芝加哥是。 投票初期,往往投票。



Answer 10:

对我来说,解决办法是让模态poup出主更新面板。 一旦我做到了逗号走了。 如果你忠实地需要的模式弹出的内部更新面板,创建它自己该面板内。
我并不需要回滚到以前版本的工具包。



Answer 11:

我一直在试图解决现在这个每天和一些非常乐于助人的人在我的办公室里想出了一个很好的解决方案!

我们已将ModalPopUpExtender和扩展器在页面上控制在最外面的UpdatePanel的ouside随后弹出的面板中,创建一个假的按钮,并给了假按钮的ID给ModalPopUpExtender的财产的TargetControlID。

<asp:Button runat="server" ID="dummyButton" CausesValidation="false" Style="display: none" />

<cc1:ModalPopupExtender ID="ModalPopupExtender1" runat="server" TargetControlID="dummyButton" CancelControlID="CancelPopUp" PopupControlID="PanelID" BackgroundCssClass="modalBackground" />

在我的表单/页面,弹出式扩展和面板曾经是,我创建了,我们习惯用触发ModalPopUpExtender按钮onclick事件。

<asp:ImageButton ID="ButtonID" runat="server" Text="Add" ImageUrl="~/Images/Add-32-1-small.png" OnClick="LoadPopUp" />

;在代码中LoadPopUp后面我干脆把ModalPopUpExtender1.Show() - 在我的按钮触发ModalPopUpExtender,我创建了一个叫做“LoadPopUp” onclick事件

protected void LoadPopUp(object sender, EventArgs e)
{
  ModalPopupExtender1.Show();
}


Answer 12:

我除了我没有使用AjaxControlToolkit或更新面板有同样的问题。 我的问题是由移动解决<form>标记从ASP.net主页到文本框是该页面。 可以帮助别人。



Answer 13:

有同样的问题, 我发现这里的解决方案 : http://ajaxcontroltoolkit.codeplex.com/workitem/26259

问题是阿贾克斯的最后一个版本,只需安装2009年AJAX版本和modalpopup将正常工作与你的实际代码。

我有同样的问题,发现上面指出的链路解决方案。 这个问题是最近版本的Ajax,只需安装2009版本和ModalPopup与您现有的代码工作。



Answer 14:

该解决方案是让模式弹出出主更新面板。 一旦做到这一点,逗号就会消失。 如果你真正需要的模式弹出的内部更新面板,创建它自己该面板内。



Answer 15:

我有这个问题,失去了相当多的时间在上面,发现它是由一个额外的标签隐藏了,我忘了改变的标记时,删除引起的。

确保在.aspx页面中的所有标签排队正确的。

<div>
   **Lots of code here**
   </div> <-- That guy owes me a vacation!
</div>


文章来源: modalpopupextender and commas appearing in my textbox asp.net