javascript - 在带有主文件的ASP.NET 2.0页面上使用Java Timer

标签 javascript button timer asp.net-2.0

我发现有时您想做的最简单的事情几乎不可能为答案提供资金。我在Visual Studio 2005中编程的ASP.NET V2中有一个ASPX页。ASPX页具有背后的代码ASXP.VB页,并绑定到.master文件。我有两个按钮[Button_Process],它们最终将调用一个程序,该程序将从SQL表中提取数据-此处没有问题。 [Button_Process]还将调用一个JavaScript计时器,该计时器持续7秒(提取足够的时间)。我们正在执行计时器延迟,因此会出现一个可爱的小图形,并使使用该页面的人认为系统正在运行,而不是双击按钮-我知道还有其他方法可以这样做,但这是我们已知的方法) 。同样,这里没有问题。单击[Button_Process]按钮七秒钟后,用aleart测试会发送一条消息。到目前为止,世界上一切都很好。

我还有第二个按钮[Button_PM_Upload],在此期间处于隐藏状态。最终,它将在单击按钮时调用一个程序,以收集上一次单击按钮收集的信息,将其与第二个SQL表中的数据进行比较,并更新第二个SQL表。我要做的就是在七秒钟后使第二个按钮可见。我的任务很简单,但是在寻找解决方案时遇到了问题。

在head标签之间的母版页中,此计时器代码非常有效:

<script type="text/javascript">
<!--
var secs
var timerID = null
var timerRunning = false
var delay = 1000

function InitializeTimer()
{
    // Set the length of the timer, in seconds
    secs = 7
    StopTheClock()
    StartTheTimer()
}

function StopTheClock()
{
    if(timerRunning)
        clearTimeout(timerID)
    timerRunning = false
}

function StartTheTimer()
{
    if (secs==0)
    {
        StopTheClock()
        // Here's where you put something useful that's
        // supposed to happen after the allotted time.
        // For example, you could display a message:
        alert("The timer is working properly")
        //document.getElementsByName ("Button_PM_Upload").style.display=
         "block";          
    }
    else
    {
        self.status = secs
        secs = secs - 1
        timerRunning = true
        timerID = self.setTimeout("StartTheTimer()", delay)
    }
}
//-->
</script>


在ASPX.VB后面的代码页上,是该按钮单击的代码,它的效果也很好:

Protected Sub Button_Process_OnClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button_Process.Click
    'This code fires of the timer in the master file
    ClientScript.RegisterStartupScript(GetType(Page), "Startup", "<script type=text/javascript>InitializeTimer()</script>")
End Sub


经过几天的阅读和研究,我发现计时器是在客户端,后面的代码是在服务器端,并且“两者永远不要说话”。 NET上的文章说,要使第二个按钮可被javascript“抓取”,我必须说(visible = false)使其最初在timer之前不可见,后者是服务器端的,并且不会在客户端传递按钮,我需要调整显示命令。该代码位于该按钮的ASPX页面上,并在源代码中如下所示:

<asp:Button ID="Button_PM_Upload" runat="server" Style="display: none; left: 632px;
position: absolute; top: 252px; z-index: 104;" Text="Upload to PartsMaster"
ToolTip="Change PR codes and Descriptions"  Width="147px" />


正如我的哥哥在我们青年时代所说的那样:“此时此刻,一切都是笨拙的”。文章说的下一部分在作者之间有所不同。但是,所有人都有一个严密的解决方案,但不知道将代码放置在何处。我一直将其放在母版页Javascript中的警报下。这是我得到的:

document.getElementsByName("Button_PM_Upload").style.display="block";


给我-按钮保持隐藏

document.getElementsByName("Button_PM_Upload").style.display='block';


给我-按钮保持隐藏

document.getElementsByName('Button_PM_Upload').style.display='block';


给我-按钮保持隐藏

document.getElementsByName('Button_PM_Upload').style.display="block";


给我-按钮保持隐藏

每当我用块代替内联(一个建议)时,所有四个代码行都给我相同的结果(什么都没有)。每当我用block代替可见的(另一个建议)时,所有四个代码行都给我相同的结果。每当我用内联替换块(另一个建议)时,所有四个代码行都给我相同的结果。

我确实找到了将服务器代码放入-(“ <%= Button_PM_Upload%>”)-的示例,但我得到的只是一个错误(无论如何安排),其内容如下:BC30451:名称为'Button_PM_Upload '未声明。

我的网站在项目的根目录上具有母版页。根目录上还有一个名为[PSC_Tools]的文件夹。我的ASPX和ASPX.VB页面位于该文件夹中,我想知道它是否可能是一个简单的路径问题。无论是什么,我都停滞不前-有时候最简单的事情是最难找到的代码。 Ajax工具是不可能的。该网站是在没有它们的情况下开发的,如果将其导入,则会干扰运行该网站的配置文件。

我在某处缺少代码吗?我不导入东西吗?这与config或css文件有关吗?我很茫然。我遇到了您的站点,可能会感觉到收集到的智力的热度以及从监视器中渗出的经验。希望我能遵循提出问题的规则,非常感谢您能提供的任何帮助。作为帮助,您可以让我确切知道代码应该在哪里以及在什么页面(ASPX,ASXP.VB,.master)上。

周末愉快

最佳答案

有一个简单的解决方法:将按钮包装在div中:

<div id="x"><asp:Button/></div>


然后隐藏并显示div。

如果要禁用该按钮,请使用jQuery,如下所示:

$('#x button').attr('disabled', 'disabled');


诀窍是通过包装元素引用按钮。

关于javascript - 在带有主文件的ASP.NET 2.0页面上使用Java Timer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3943717/

相关文章:

表单的 "button"类型而不是 "submit"类型的 JQuery 验证

timer - 如果在另一个计费小时之前空闲,则关闭 EC2 实例

PHP 定时重定向不重定向?

javascript - 当新文本到达时,JavaScript 计时器完成后的文本不会被删除

javascript - 使用 AngularJS 附加 HTML

javascript - 如何在 D3 javascript 中从 CSV 中加载的列进行子集化

javascript - 改变浏览器窗口大小时的 JS 逻辑

javascript - 为什么 React 组件不渲染?

ios - 为什么我的按钮不让我的选择器 View 出现?

android - 从其他 Activity 的列表中删除项目