2

これはイライラします。クリックすると、ページに新しいinput field内部を作成したいだけです。私はJavaScript関数ウィッチを使用して、新しい子要素(入力フィールド)を既存のに追加します。それはすべて次のようになります。divaspxbuttondiv

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test.aspx.cs" Inherits="Pages_test" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript">

        function clone() {
            var html = document.createElement("input");
            html.setAttribute("id", 1);
            html.setAttribute("name", "dejan");
            html.setAttribute("value", "some text");
            html.setAttribute("type", "text");
            document.getElementById("panj").appendChild(html);
        }

    </script>
</head>
    <body>
        <form id="form1" runat="server">
            <div id="panj">
                Djubrov
            </div>
            <asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="clone()" />
        </form>
    </body>
</html>

面白いことに、ボタンをクリックするとテキスト値が設定されたテキスト要素が一瞬点滅しますが、後で消えます。何か不足していますか?

4

3 に答える 3

7

そのボタンをクリックするたびに、ポストバックが発生します。

次のようにポストバックを停止して修正します。

<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="clone(); return false;" />
于 2012-02-22T23:41:29.787 に答える
1

ボタンはサーバーへの要求を生成し、その後の応答は新しいHTMLドキュメントでページを上書きします。ポストバックfalseを防ぐためにJavaScript関数から戻ります。asp:Button

function clone() {
    // your above code
    return false;
}

ボタンを次のように変更します

OnClientClick="return clone()"

asp:Buttonサーバーとの対話が必要ない場合は、サーバーを<button>またはにすることを検討してください<input type='button' />

于 2012-02-22T23:39:37.120 に答える