-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

因此,在没有看到您的代码的情况下,我可以提出使用数据库 ID 作为您的最后四位数字的想法吗?我提倡的是在数据库中初始保存记录,其唯一目的是获取即将成为新记录的 ID,然后使用 ID 值前面的日期。这将允许您的 ID 是唯一的,并且在“循环”重新启动时不会“重置”为零。如果用户不提交表单,这当然会在数据库中创建部分记录。

只是一个想法。

于 2013-06-13T19:10:39.360 回答
0

如果您的 javascript 函数 SubmitForm() 返回 true,则当您单击提交按钮时,您的页面将回发,它会转到服务器端进行 Button1_Click 事件,之后您的页面将被重置。要解决此问题,您可以对提交按钮使用updatepanel 和 out asyncpostback事件,或者您可以在代码后面执行所有 generateID 逻辑代码并存储在视图状态中

于 2013-06-14T05:12:31.423 回答