1

我正在尝试使用javascript禁用页面上的控件..我正在执行以下操作但无法成功执行..我遗漏的任何内容,请指出..

       if (some condition) {        
        var textBoxTemp = document.getElementById('_ctl21_m_txtTemp');
        textBoxTemp.disabled = true;
        }

我通过查看页面的来源获得了元素 id。在源代码中显示

_ctl21:m_txtTemp

我尝试同时使用

_ctl21:m_txtTemp 和 _ctl21_m_txtTemp

在上面的第二行代码中..

4

6 回答 6

2

您可以使用 jquery prop()禁用文本框。

$("[id$=txtTemp]").prop("disabled", true); 

注意:prop() 仅在 jquery 1.6 之后可用。如果您使用的是早期版本,则可以使用attr()代替:

$("[id$=txtTemp]").attr("disabled", "disabled"); 

编辑

由于 ASP.NET 倾向于破坏控件的 ID,因此您可以通过多种不同的方式在页面上找到控件,例如:

$('[id$=txtTemp]')
$('#<%= txtTemp.ClientID %>')

编辑

由于您似乎认为您的控件可能位于 iframe 中,因此我从以下 stackoverflow 问题中找到了此解决方案:how-can-i-access-iframe-elements-with-javascript

function iframeRef( frameRef ) {
    return frameRef.contentWindow ? frameRef.contentWindow.document : frameRef.contentDocument
}

var iframe = iframeRef( document.getElementById('iframeID') )

您现在可以通过以下方式搜索 iframe 内容,就好像它是文档一样:

iframe.getElementByID('<%= txtTemp.ClientID %>').disabled = true;
于 2012-05-17T17:50:55.923 回答
1

您标记了 Jquery,所以我想我可以提供一个 jquery 解决方案:

if (some_condition)
{
  $('#_ctl21_m_txtTemp').attr('disabled','disabled');
}
于 2012-05-17T17:50:59.260 回答
0

我不知道你是想在 jQuery 中还是在普通的旧 Javascript 中使用它,但它在两者中都有:

Javascript

(您可能正在寻找只读属性而不是禁用)

var textBoxTemp = document.getElementById('_ctl21_m_txtTemp');
textBoxTemp.readonly = true;

jQuery

$('#_ctl21_m_txtTemp').attr('readonly',true);
于 2012-05-17T17:55:12.527 回答
0

根据http://www.w3schools.com/tags/att_input_disabled.asp

语法应该是

textBoxTemp.disabled="disabled"  

你可以试试看。

于 2012-05-17T17:54:50.460 回答
0

如果你使用 jQuery,你可以这样做

$('#<%= txtTemp.ClientID %>').attr("disabled", "disabled");

这样可以确保您在移动文本框时获得正确的客户端 ID。

于 2012-05-17T17:52:17.663 回答
0

使用 jQuery,我不会使用 document.getElementById,这完全不是重点

textBoxTemp = $('#_ctl21_m_txtTemp'); // weird name, by the way
textBoxTemp.attr('disabled','disabled');
于 2012-05-17T17:52:39.847 回答