1

私はasp.net、C#、jQuery 1.8.3/1.7.2で作業しています

ページの読み込み時に、テキストボックスの「読み取り専用」属性をスクリプトで「true」または「false」に変更したいと考えています。 *更新*テキストボックスへの値は実行時に読み込まれます..スクリプトは次のとおりです。

function hidebtn() {        
    $('#diviv').css({
        "display": "block"
    });

    $("#txtname").attr('ReadOnly', true);
}

アラートを作成すると、正常に機能し、div が正常に表示されるようになりました。txtname 属性は変更されません。このメソッドを分離コードから次のように呼び出しています。

Page.ClientScript.RegisterStartupScript(this.GetType(), "Call my function", "hidebtn();", true);
4

7 に答える 7

1

あなたが使用する必要があります

  $("#txtname").prop('readonly', true); //lowercase

prop の方が適しています。同じことが言えますchecked="checked"

特定の状況では、属性とプロパティの違いが重要になる場合があります。jQuery 1.6 より前では、一部の属性を取得するときに .attr() メソッドがプロパティ値を考慮に入れることがあり、一貫性のない動作を引き起こす可能性がありました。jQuery 1.6 以降、.prop() メソッドはプロパティ値を明示的に取得する方法を提供しますが、.attr() は属性のみを取得します。

HTML属性とDOMプロパティがすべてです。

于 2013-01-03T12:36:30.637 に答える
1

ReadOnlyに変更readonly

$("#txtname").attr('readonly', true);
于 2013-01-03T12:36:46.947 に答える
1

これを試して

 $("#txtname").prop('readonly', true);

更新しました

$("#<%= txtname.ClientID %>").prop('readonly', true);
于 2013-01-03T12:37:16.010 に答える
1

これを使って

$("#<%= txtname.ClientID %>")

以下のように

$("#<%= txtname.ClientID %>").attr('ReadOnly', true);

一緒に

function hidebtn() {        
$('#diviv').css({
    "display": "block"
});

$("#<%= txtname.ClientID %>").attr('ReadOnly', true);
}

または、コントロール プロパティReadOnlyを次のように設定します。False

于 2013-01-03T12:37:37.097 に答える
0

いくつかのレンダリングの問題により、何も正しく動作していないようです。だから私はjQueryとクライアントスクリプトをテキストボックスの有効化/無効化に置き換えました。

ありがとう

于 2013-01-04T06:46:35.813 に答える
0

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);
于 2013-01-03T13:15:11.803 に答える
0

入力を読み取り専用に変更するには、これを使用する必要があります

$("#txtname").attr('readonly', 'readonly');
于 2013-01-03T12:37:33.390 に答える