ClientScriptManager.RegisterStartupScript ドキュメントによると、スクリプト ブロックは、ページの読み込みが完了した後、ページの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);