0

Aspx ページで一部のコントロールを無効にしようとしていますが、機能しません。私はJavascriptとJQueryの両方を試したので、何か単純な間違いをしているに違いないことを知っています.

これが私がatmを持っているものであり、私がそうするようにアラートで立ち往生しているので、私が望むときに間違いなく両方の機能に入ることを知っています. ただし、コントロールは常に有効のままです。

<script language="javascript" type="text/javascript">

function fun1(){
var input = $('#txtDocs');
input.removeAttr('disabled');
}

function fun2() {
var input = $('#txtDocs');
input.attr('disabled', 'disabled');
}

そしてコントロール自体。

<p>
<asp:TextBox ID="txtDocs" runat="server"  Width="218px" 
      Height="75px" TextMode="MultiLine" MaxLength="40"/>
</p> 

また、次のさまざまなバージョンの両方の関数のコードを交換しようとしました。

document.getElementById("txtDocs").enabled = true;
document.getElementById("txtDocs").attributes.enabled = true;
document.getElementById("txtDocs").disabled = false;

ダメだけど。私は何を間違っていますか?

アップデート

現在のコード;

function fun1(){
alert("1 enable");
$('#txtDocs').removeAttr('disabled');
alert("2 enable");
}

function fun2() {
alert("1 disable");
$('#txtDocs').prop('disabled', true);
alert("2 disable");
}

<asp:TextBox ID="txtDocs" runat="server"  Width="218px" ClientIDMode="Static"
      Height="75px" TextMode="MultiLine" MaxLength="40"/>

まだ駄目 :/ 私は しか見ていないのでalert("1 disable")、fun2 を使いこなせていません...alert("1 enable")alert("2 enable")

ノート

コードをデバッグしたところ、実行時に Textbox が実際には Textarea であることがわかりました。何か重要ですか?また、その ID には通常の「ctl00_MainContentPlaceHolder_」が先頭にタグ付けされます。

4

6 に答える 6

3

jQuery 1.6 以降を使用している場合は、prop() を使用する必要があります。

$('#txtDocs').prop('disabled',true);
$('#txtDocs').prop('disabled',false);

jQuery ドキュメントhttp://api.jquery.com/prop/に準拠

.attr() メソッドの代わりに、.prop() メソッドを使用して無効化およびチェックを設定する必要があります。

于 2012-07-31T14:50:13.927 に答える
1

disabled属性ではなくバイナリプロパティであるため、次を使用する必要があります。

$('#txtDocs').prop('disabled','disabled');
$('#txtDocs').removeAttr('disabled');
于 2012-07-31T14:51:28.957 に答える
0

それを本当に説明することはできませんが、ここですべてを試し、ネット上で見つけたすべてのものを試した後、私のオブジェクトをそのように参照しました。

document.getElementById('ctl00_MainContentPlaceHolder_txtDocs').disabled = false;

IDの前に#がないことに注意してください。また、IDの前に「ctl00_MainContentPlaceHolder_」を付けたので、ClientIDModeは必要ありませんでした。

于 2012-08-01T07:49:21.277 に答える
0

あなたがやるべきことのように見えます:

input.attr('disabled', true); // to disable

input.removeAttr('disabled'); // to enable
于 2012-07-31T14:52:01.717 に答える
0

ID「 txtDocs TextBox」はそのようにクライアントに送信されないため、JavaScript は次の要素を見つけることができません。TextBoxコントロールの属性を次id="txtDocs"のように設定する必要があります。ClientIDModeStatic

<asp:TextBox ID="txtDocs" runat="server" Width="218px" ClientIDMode="Static" 
   Height="75px" TextMode="MultiLine" MaxLength="40" />
于 2012-07-31T14:52:25.350 に答える
0

マークアップ

ClientIDModeがありません...

<asp:TextBox ID="txtDocs" runat="server" Width="218px" 
  ClientIDMode="Static" Height="75px" TextMode="MultiLine" MaxLength="40" />

JavaScript

document.getElementById('IdOfTheTextbox').disabled = true/false;

問題を綿密にスキャンする代わりに、FireBug を使用します。

于 2012-07-31T14:52:48.130 に答える