如何阻止循环重置?

时间:2013-06-13 19:02:47

标签: javascript asp.net

当按下生成id按钮一次时,它将禁用。并显示数字。最后4位“0001”是一个循环,这意味着如果我没有禁用生成id按钮,如果我再次单击该按钮,最后4位数将在结尾添加1“0002”。现在它已被禁用,因为我只希望用户能够生成一次..但是当我按下提交按钮时,我的代码运行并且页面重置(意味着生成ID现在可用于推送)。所以当我再次按下生成ID按钮时,循环再次被重置,这意味着它再次显示“0001”而不是“0002”。当我按下提交按钮时,我可以提出哪些建议,循环不会重置?

enter image description here

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"
/>

3 个答案:

答案 0 :(得分:2)

您需要使用服务器!具有多个浏览器的客户端无法知道下一个值是什么。服务器应该生成的数字不是客户端!

答案 1 :(得分:0)

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

只是一个想法。

答案 2 :(得分:0)

如果您的javascript函数SubmitForm()返回true,则单击“提交”按钮时页面将回发它将转到服务器端以执行Button1_Click事件,之后将重置页面。 要解决此问题,您可以使用 updatepanel和out asyncpostback 事件进行提交按钮,您可以在代码后面执行所有 generateID逻辑代码并存储在viewstate < /强>