2009-09-07 10 views
55

私は2つのフィールドを持っています:1入力、1選択ボックス。jQuery - フォームフィールドを無効にする

ユーザがもう一方のフィールドを使用しているときにブラウザでフィールドのいずれかを無効にすることはできますか?

たとえば、ユーザーが入力にデータを入力する場合、選択ボックスは無効になります。ユーザが選択(ドロップダウン)からデータを選択している場合、入力は無効になります。

これについてのお手伝いがあれば幸いです。

事前に乾杯。

答えて

112
<script type="text/javascript" src="jquery.js"></script>   
<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#suburb").blur(function() { 
      if ($(this).val() != '') 
       $("#post_code").attr("disabled", "disabled"); 
      else 
       $("#post_code").removeAttr("disabled"); 
     }); 

     $("#post_code").blur(function() { 
      if ($(this).val() != '') 
       $("#suburb").attr("disabled", "disabled"); 
      else 
       $("#suburb").removeAttr("disabled"); 
     }); 
    }); 
</script> 

また、あなたのselect要素の下で最初のオプションにvalue属性を追加する必要があります:

<option value=""></option> 
+0

を行うことができます。 残念ながら、スクリプトは私のために働いていません。スクリプトが動作するために必要なことはありますか?以下 は私のコードである: <入力クラス= "テキストフィールド" タイプ= "テキスト" 名前= "post_code" ID = "post_code" MAXLENGTH = "4" /> user159025

+0

jQueryをインクルードして、このコードを$(document).ready()ブロックに入れる必要があります(以下のように更新されています)。これをrelfectしてください)。 HTMLについては、この選択ボックスでデフォルト値が必要になります。これにより、この作業が確実に行われます。 –

+0

あなたの努力をありがとう。残念ながら、それは私のために働いていません。 乾杯。 – user159025

7

も選択のために、この

$("#inp").focus(function(){$("#sel").attr('disabled','true');}); 

$("#inp").blur(function(){$("#sel").removeAttr('disabled');}); 

その逆を試してみてください。

+0

あなたの努力をありがとう。残念ながら、それは動作しません。 – user159025

+0

何が起こったのか詳細を追加できますか?私はIEでそれを試して正常に動作していた。 – Nrj

+0

ねえNrj。 返信いただきありがとうございます。私はスクリプトを追加しました。しかし、何も起こりません。 乾杯。 – user159025

12
$('input, select').attr('disabled', 'disabled'); 
+1

+1と私は、スタイルのために次の行を追加します: $( 'input、textarea')。attr(document()).res(function()を追加して別のID名を試しました。 ( 'readonly'、 'readonly'); – AlterPHP

0

ここで同じことを行うためのプラグインjQueryの:http://s.technabled.com/jquery-foggle

+1

は$ 3から$ 15の間のコストでオープンソースではありませんが、問題は解決します。 – ftrotter

44

jQueryのドキュメントは(小道具を使用することを言う)、無効確認などのようなもののためにも、より簡潔な方法は、彼らのセレクタエンジンを使用することです。したがって、divまたはフォームの親のすべてのフォーム要素を無効にする。

$myForm.find(':input:not(:disabled)').prop('disabled',true); 

そして再び、あなたを有効にするには、bigmattyhねえ迅速な応答を 感謝を

$myForm.find(':input:disabled').prop('disabled',false); 
+0

これはより洗練されており、論理構造 – dwenaus

関連する問題