2017-02-16 6 views
1
<input type="checkbox" runat="server" name="Seasonal" value="Seasonal" id="isASeasonal" onclick=" if ($(this).is(':checked')) { console.log('Worky'); $('#ShowIfChecked').show(); $('#HideIfChecked').hide(); } else { $('#HideIfChecked').show(); console.log("No Worky"); }" /> 

以内に、それは特定の入力フィールドを表示&他の入力フィールドを非表示にするチェックすると、チェックボックスを作成し、それが適切に機能していない、私も行っていますこのコードを凝縮する方法に関する徹底的な研究。私は三項演算子でこの声明を凝縮しようとしていました。可能であれば、偉大な解決策を教えてください!ありがとう(三成分ソリューションは素晴らしいだろう)私はjQueryを使ってこれを行うにしようとしてきたモーダル

+0

HTMLを表示できますか?また、あなたが試したことがあります –

答えて

1

少なくとも私のために、本当に何が起こっているのか分かりやすいので、onclickを関数に変更することができます。

だからあなたのビュー内

<input type="checkbox" runat="server" 
    name="Seasonal" value="Seasonal" id="isASeasonal" onclick="myFuncton(this)" /> 

<input type="checkbox" runat="server" name="Seasonal" value="Seasonal" id="isASeasonal" 
     onclick=" if ($(this).is(':checked')) { console.log('Worky'); $('#ShowIfChecked').show(); $('#HideIfChecked').hide(); } 
     else { $('#HideIfChecked').show(); console.log("No Worky"); }" /> 

を変更:

<script> 
    myFunction(myCheckBox) 
    { 
     if(myCheckBox.Checked) 
     { 
      console.log('Worky'); 
      $('#ShowIfChecked').show(); 
      $('#HideIfChecked').hide(); 
     } 
     else 
     { 
      $('#HideIfChecked').show(); console.log("No Worky"); 
     } 
    } 
</script> 

今、あなたが望む表現/三元ソリューションを取得するには、あなたが見て、このスクリプトを変更することができますこのように:

私の問題を修正何

You can find more Info about Ternary Solutions here

+1

私の質問のすべての部分にお答えいただき、ありがとうございました。 – HecticHiccups

+0

@HecticHiccups問題はありません、幸せに助けてください:) – Rinktacular

0

私たちはこのようなコードを書かない。すべてのコードレビューで失敗します。

これを行います。

$( '#のisASeasonal')をクリックします(関数(){...});

https://api.jquery.com/click/

3

あなたのコードの問題は、あなたがinput要素の属性をめちゃくちゃにされて、あなたのコード内でconsole.log("X")呼び出しによるHTMLでミスマッチした引用符を持っているということです。コンソールをチェックすると、これに関するいくつかのエラーが発生する可能性が最も高いでしょう。

この理由から、インラインスクリプト(またはCSSスタイリング)を使用することは悪い習慣と考えられています。他の問題は、懸念の分離に悪影響を及ぼし、コードを編集を読みにくくすることです。

$('.seasonal-checkbox').change(function() { 
 
    $('#ShowIfChecked').toggle(this.checked); 
 
    $('#HideIfChecked').toggle(!this.checked); 
 
});
#ShowIfChecked { 
 
    display: none; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="checkbox" runat="server" name="Seasonal" value="Seasonal" id="isASeasonal" class="seasonal-checkbox" /> 
 

 
<div id="ShowIfChecked">Checked!</div> 
 
<div id="HideIfChecked">Not Checked!</div>

changeイベントの使用をclick上で、イベントは、まだユーザーのために解雇されるように:それはこのように控えめなJavascriptを使用してイベントハンドラを、添付しはるかより良いプラクティスです誰がキーボードを使ってウェブをナビゲートするかtoggle()を使用して簡略化したロジックに注意して、各メソッドへの1回の呼び出しで関連するコンテンツを非表示にして表示すると、ifステートメントの必要性がなくなります。

+0

ええ、私は外部スクリプトファイルを持っていることを知っています。内部スクリプトはチームメイトによって配置され、それが動作する唯一の方法でした。私は現在、彼のコードを再編成しようとしています。スクリプトは、 "MODAL"内の入力フィールドを隠そうとすると正しく動作しますが、チェックボックスをクリックしたときに入力フィールドを隠すことはありません。 – HecticHiccups

0
Seasonal Address:&nbsp <input type="checkbox" runat="server" clientidmode="Static" name="Seasonal" value="Seasonal" id="isASeasonal"/> 

$('#ShowIfChecked').hide(); //Hid What needs to be shown if checked. 
$("#isASeasonal").click(function() { //Used Click event on checkBox 
($("#isASeasonal").is(':checked')) ? (console.log('worky'), $('#ShowIfChecked').show(), $('#HideIfChecked').hide()) : (console.log('no worky'), $('#HideIfChecked').show(), $('#ShowIfChecked').hide()); 

ASP.netで私は&ショーを非表示にしようとしていたのdivのに=「静」のClientIDModeを追加するために必要なことでした。私はまだ理由を理解していない、私は現在それを見ているが、これは私のために働いたが、上記の三元演算子で最終製品の大半を見ることができます!わーい。

関連する問題