2016-08-27 3 views
4

ブートストラップとjqueryでコーディングする際に新しい。どのように私はここで、「onswitchchange」メソッドオプションオンスイッチ変更後にブートストラップスイッチを無効にする

にブートストラップスイッチを無効にすることができ、私のjavascript/jqueryのコード:

$("input[type=checkbox]").bootstrapSwitch({ 
    size:"mini", 
    onSwitchChange:function(event, state) { 
     this.disabled = true; //checkbox change into disabled 
    } 
    }); 

私も$(this).setDisabled(true);this.disabled = trueを変更しようと、それは当然のエラーを返します。私はonswitchchangeメソッド内でsetDisableメソッドを呼び出す方法を知りたいだけです。それがそうでないならば。変更後にスイッチを無効にする方法はありますか?それをクリックしますか?

+1

これを実現するには、jQueryの 'attr()'関数を使用してください。私は以下の答えを投稿しました。 'disabled'要素はフォームでポストされていないことに注意してください。値を投稿したい場合は、' readonly'を代わりに使用してください:) –

+0

@GeoffJames私はそれを前に試しました。いずれかの仕事もありませんでした。隠しチェックボックスを無効にしただけです。完全な要素ではありません。私はまだクリックして状態を変えることができます。 – Fadhil

+1

スイッチとチェックボックスを含むコードを投稿できますか? 'checkbox 'が入っているコンテナを見つけるために' .closest(' element ') 'セレクタを使用して無効にすることができます。あなたがコードを投稿すると答えを更新します:) –

答えて

3

UPDATE:ブートストラップ・スイッチを使用している場合、あなたは2つの機能のいずれかを使用することができます

onSwitchChange:function(event, state) { 
    $(this).bootstrapSwitch('disabled', true); 
} 

あります:あなたのonSwitchChangeハンドラでそう

$(this).bootstrapSwitch("toggleDisabled"); // toggles whether `this` is disabled 

$(this).bootstrapSwitch("disabled",true); // just disables the `this` element 

を、あなたはbootstrapSwitch("disabled", true)メソッドを使用することができますそれが変更されたときのハンドラにあるように、 "トグル"には本当の意味がありません。


前の答え - あなたはdisabledにフォーム要素を設定したい場合は要素

を無効にするには、jQueryのを使用したい人のために、あなたはそのdisabled属性を宣言する必要があります。

宣言したばかりのtrueに設定するか、disabledに設定するかは、議論の余地があります。

個人的に(そして最も好ましい/互換性がある)はdisabled=disabledに設定されます。


、あなたがattr()機能使用できるjQueryのを使用して属性要素を設定するには(最初の引数は、2番目の引数は値である属性です)

onSwitchChange:function(event, state) { 
    $(this).attr('disabled', 'disabled'); // set the element's disabled attribute 
} 

注:あなたは無効にしているので、チェックボックス - これはその値がformで掲示されないことを意味します。


フォームでPOSTされる値を必要とし、readonly属性を使用してreadonlyに設定場合:

onSwitchChange:function(event, state) { 
    $(this).attr('readonly', 'readonly'); //checkbox is readonly, but still POSTed 
} 

をここでdisabledとの違いを説明する偉大な答えはですおよびreadonlyhttps://stackoverflow.com/a/7357314/6240567


EDIT:上記のコードはcheckboxのみを無効/読み取り専用にしています。コンテナなどの要素を無効にするには、.closest()セレクタを使用する必要があります。

トップセレクタの先端、およびどれ以下のものが必要です。要素の

  • div試合タイプ - それはdiv要素を選択し、この場合には。クラスの
  • .some-class一致 - この場合はクラスとして、要素のid
  • #someIdマッチ「some-class」を持っている任意の要素 - この場合には、それは「someId」のid

で要素を選択しますそれで、無効にしたいclosest要素(またはそのコンテナ)を選択することができます

例:

// set the checkbox's closest element with "bootstrapSwitch" class, to disabled 
    $(this).closest('.bootstrapSwitch').attr('disabled', 'disabled'); 

これが役に立ちます。 :)

+1

助けてくれてありがとう.. iveは解決策を見つけた。それは '$(this).bootstrapSwitch(" toggleDisabled ");や$(this).bootstrapSwitch(" disabled "、true);に置き換える必要があります。このようにあなたの答えを編集すると素晴らしいでしょう。だから私は最高の答えとしてそれを受け入れることができます。それは私と同じ問題を抱えている他の人を助けるでしょう。 – Fadhil

+0

ありがとう@Fadhil、私はこれを私の答えの一番上に含めました:)うまくいけばうれしいです –

+0

okありがとう... fyi:私は今、ajaxで働いています。スイッチの状態をデータベースに送信します。だから私はajaxコールバックを取得するまで、スイッチを無効にする必要があります。その後スイッチが有効になります:) – Fadhil

関連する問題