我正在使用asp.net,C#,jQuery 1.8.3 / 1.7.2
我想在页面加载时将脚本中的文本框“Readonly”属性更改为“true”或“false”。 *已更新 *文本框的值在运行时加载.. 这是脚本:
function hidebtn() {
$('#diviv').css({
"display": "block"
});
$("#txtname").attr('ReadOnly', true);
}
如果我写了一个警报,它工作正常,现在div显得很好。 txtname属性未更改。我从代码隐藏这样调用这个方法:
Page.ClientScript.RegisterStartupScript(this.GetType(), "Call my function", "hidebtn();", true);
答案 0 :(得分:1)
你应该使用
$("#txtname").prop('readonly', true); //lowercase
道具是一个更好的选择。同样适用于checked="checked"
属性和属性之间的区别非常重要 具体情况。在jQuery 1.6之前,有时会使用.attr()方法 在检索某些属性时考虑了属性值, 这可能会导致行为不一致。从jQuery 1.6开始,.prop() 方法提供了一种显式检索属性值的方法 .attr()只检索属性。
所有关于 HTML属性与DOM属性。
答案 1 :(得分:1)
将ReadOnly
更改为readonly
$("#txtname").attr('readonly', true);
答案 2 :(得分:1)
试试这个
$("#txtname").prop('readonly', true);
<强>更新强>
$("#<%= txtname.ClientID %>").prop('readonly', true);
答案 3 :(得分:1)
使用此
$("#<%= txtname.ClientID %>")
如下
$("#<%= txtname.ClientID %>").attr('ReadOnly', true);
一起
function hidebtn() {
$('#diviv').css({
"display": "block"
});
$("#<%= txtname.ClientID %>").attr('ReadOnly', true);
}
或将控件属性ReadOnly
设置为False
答案 4 :(得分:0)
您应该将此用于更改输入为readonly
$("#txtname").attr('readonly', 'readonly');
答案 5 :(得分:0)
根据ClientScriptManager.RegisterStartupScript Documentation,脚本块应在页面加载完毕后但在页面的OnLoad
事件被触发之前执行。
如果您碰巧在OnLoad
事件中添加了文本框,那么选择器将永远不会找到控件。
无论哪种方式,您都应该在脚本运行时检查您的控件是否存在 你可以通过执行:
来做到这一点console.log($("#txtname").length); //or
alert($("#txtname").length);
如果长度不是0
,那么其他内容可能会覆盖您的readonly
设置。也许在脚本运行或类似之后重新呈现控件。
如果长度为0
,则您的控件尚未显示在页面上。
您可以尝试将代码包装在$(document).ready(function(){//yourcode here})
中以查看它是否有所作为。
您可以使用stringbuilder来构建脚本并使用Page.ClientScript.RegisterClientScriptBlock
代替此类:
StringBuilder hideBtnScript = new StringBuilder();
hideBtnScript.Append("<script type=\"text/javascript\">");
hideBtnScript.Append("$(document).ready(function() {");
hideBtnScript.Append("$('#diviv').css({'display': 'block'});");
hideBtnScript.Append("$('#txtname').prop('readonly', true);});");
hideBtnScript.Append("</script>");
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "Call my function", hideBtnScript.ToString(), false);
答案 6 :(得分:0)
由于一些渲染问题,似乎没有什么工作正常。所以我只是用启用/禁用文本框替换了jQuery和Client脚本。
由于