-2

id生成ボタンは一度押すと無効になります。と数字が表示されます。最後の 4 桁の「0001」はループです。つまり、ID の生成ボタンを無効にしなかった場合、もう一度ボタンをクリックすると、最後の 4 桁の末尾の「0002」に 1 が追加されます。ユーザーが一度だけ生成できるようにしたいので、今のところ無効になっています..しかし、送信ボタンを押すと、コードが実行され、ページがリセットされます(つまり、生成IDをプッシュできるようになりました)。そのため、[ID の生成] ボタンをもう一度押すと、ループが再びリセットされます。つまり、"0001" が再び表示されますが、"0002" は表示されません。送信ボタンを押したときにループがリセットされない場合、どのような提案が必要ですか?

ここに画像の説明を入力

var count = 0;
function counter() {
    if (document.getElementById("generateid").onclick) {
        count++;
        return count;
    }

}

    function padDigits(number, digits) {
        return Array(Math.max(digits - String(number).length + 1, 0)).join(0) + number;
    }
 function generateID() {


        if (document.getElementById("generateidtxt").value == "") {
            var TheTextBox = document.getElementById("generateidtxt");
            TheTextBox.value = TheTextBox.value + guidGenerator();
            document.getElementById("generateid").disabled = true;
        }

}
 function guidGenerator() {
    var theID = (Year() + "-" + Month() + "-" + Day() + "-" + padDigits(counter(),4));
    return theID;
}

  <asp:Button ID="Button1" runat="server"  Onclick = "Button1_Click" 
            OnClientClick = "javascript:return SubmitForm();" 
            Text="Submit" Width="98px"
/>
4

3 に答える 3

2

サーバーを使用する必要があります。複数のブラウザーを持つクライアントが次の値を知る方法はありません。クライアント側ではなく、サーバーが番号を生成する必要があります。

于 2013-06-13T19:10:49.263 に答える
0

JavaScript 関数 SubmitForm() が true を返す場合、送信ボタンをクリックするとページがポストバックされ、Button1_Click イベントのためにサーバー側に移動し、その後ページがリセットされます。この問題を解決するには、 updatepanel を使用して送信ボタンのasyncpostbackイベントを出力する、コード ビハインド サイドですべてのgenerateID ロジック コードを実行してビューステートに保存します。

于 2013-06-14T05:12:31.423 に答える
0

あなたのコードを見ることなく、データベース ID を最後の 4 桁として使用するというアイデアを思いつくことができますか? 私が提唱しているのは、データベースにレコードを最初に保存することです。これは、間もなく新しいレコードの ID を取得し、ID 値の前に付けられた日付を使用することのみを目的としています。これにより、ID が一意になり、「ループ」が再開されたときにゼロに「リセット」されなくなります。もちろん、これには、ユーザーがフォームを送信しない場合に、データベースに部分的なレコードが作成されるという欠点があります。

ちょっとした考え。

于 2013-06-13T19:10:39.360 に答える