JavaScript设置禁用按钮的属性

时间:2014-02-13 13:01:24

标签: javascript asp.net document-ready

预编辑:原来,这不是关于按钮的残疾,而是在保存后做了一些其他动作。我调试了页面,发现在对保存的表单进行更改后,页面失去了(document).ready部分中的javascript功能。我已经添加了解决方案作为答案。


我有一个输入页面,其中有两个按钮保存并批准。机制就像,你可以填写表格并保存,然后批准。您还可以通过刷新页面或保存的页面列表来访问已保存的页面。

如果未保存表单,则禁用批准按钮。保存后我从代码后启用它。批准按钮还有一个确认按钮扩展器,它从javascript获取其确认文本。我将其加载到(document).ready中,其代码为:

$(document).ready(function () {
        $("#ASPxSplitter1_ContentPlaceHolder1_uctActivityEntry1_tbActivity_tbHistory_btnApproveActivity_btnApprove").click(function () {

            $("#ASPxSplitter1_ContentPlaceHolder1_uctActivityEntry1_tbActivity_tbHistory_btnApproveActivity_lblMessage").text(GetConfirmTextForApprove());
        });
    });

,其中GetConfirmTextForApproval()进行一些计算并返回确认文本。

现在,我的问题是,当您打开表单时禁用该按钮时,上面的代码不会在第一页加载时呈现。这导致了一个问题,当我开始填写表单并保存它,然后批准它时,我没有得到任何确认文本,因为它没有运行该功能。但刷新页面后或从其他页面转到已保存表单的页面后,我会收到正确的确认文本。

那么,我该如何解决这个问题呢?即使在第一页加载时禁用了按钮,如何才能获得正确的确认文本?

注意:我必须在保存后添加,页面的网址会被更改。查询字符串已添加。这也可能导致问题。

2 个答案:

答案 0 :(得分:0)

您可以使用

// Disable #x
$( "#x" ).prop( "disabled", true );

// Enable #x
$( "#x" ).prop( "disabled", false );

但是当文档准备就绪时,您需要启用按钮。然后,您需要创建一个事件监听器

$("#button").click(function(){
  //Your code

  if(GetConfirmTextForApproval()){
  //You active the button and the text that you want show.
   }
});

答案 1 :(得分:0)

解决了我自己的问题:

正如在问题的预编辑中所说,问题是由于在保存后进行更改而引起的。我改变了我的功能:

$(document).ready(function () {
    SetConfirmMessageForApproval();
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
});

function EndRequestHandler(sender, args) {
    SetConfirmMessageForApproval();
    }

function SetConfirmMessageForApproval() {
        $("#ASPxSplitter1_ContentPlaceHolder1_uctActivityEntry1_tbActivity_tbHistory_btnApproveActivity_btnApprove").click(function () {
            $("#ASPxSplitter1_ContentPlaceHolder1_uctActivityEntry1_tbActivity_tbHistory_btnApproveActivity_lblMessage").text(GetConfirmTextForApprove());
        });
    }

如果有其他人需要,这会有所帮助。