2016-08-29 7 views
0

フォームには複数のチェックボックスフィールドと、対応する各チェックボックスのコメントフィールドがあります。私はこれらのフィールドを動的に作成します。たとえば、チェックボックスフィールドタグ1は、コメント1に対応します。チェックボックスがオンになっている場合、私はコメントを要求したくありません。それがチェックされていないとき、私はコメントを要求したい。チェックボックスイベントを変更して別のフィールドをトリガーする必要があります

フィールドは、ユーザーの最後の入力に基づいて事前に設定されることがあります。言い換えれば、チェックボックスは、ページがロードされたときにチェックされているか、またはチェックされていない可能性があります。私は、が必要であるとして対応するコメントフィールドを構築するようにロジックを設定しました。これに基づいてが必要かどうかは問いません。

1つを除いてすべての状況が機能しているようです。チェックボックスをオンにしてチェックボックスをオフにすると、フォームでコメントなしで送信できます。以下は私が試みたものです。

$(document).on('change', 'input[type=checkbox]', function() { 
    var checkbox = $(this), 
    otherInput = $('#comments' + this.id.replace('tag', '')); 


    otherInput.removeProp('required', !checkbox.is(':checked')); 
    if (!checkbox.not(':checked')){ 
    otherInput.prop('required',true); 
    } 
}); 

--------------------第試み

$(document).on('change', 'input[type=checkbox]', function() { 
    var checkbox = $(this), 
    otherInput = $('#comments' + this.id.replace('tag', '')); 

    otherInput.prop('required', !checkbox.not(':checked')); 
    otherInput.removeProp('required', !checkbox.is(':checked')); 

}); 

これらの両方は、上述のものを除いて、同じ状況を解決します。お知らせ下さい。

+0

2番目の例で、 'otherInput.removeProp( 'required'、!checkbox.is( ':checked')); 'の目的は何ですか? – guest271314

+0

@ guest271314ユーザがチェックボックスをチェックすると、対応するコメントフィールドから必要な属性が削除されます –

+0

はい、以前の行 'otherInput.prop( 'required'、!checkbox.not( ':checked'));'がこれを実現します、 はい?問題を示すためにjsfiddleを作成できますか? – guest271314

答えて

1

ただ、 "送信" ボタンを押すと、このJSFiddle

+0

ええええええええええええええと回答する場合は、[jsFiddle](http://jsfiddle.net)を使用するか、エディタでCtrl + Mキーを押してスタックスニペットを作成するか、コンセプトのデモを提供することをお勧めします。例。* – gibberish

0

は、あなたの検証を行う参照してください

$(document).on('change', 'input[type=checkbox]', function() { 
    var checkbox = $(this), 
    otherInput = $('#comments' + this.id.replace('tag', '')); 

    otherInput.prop('required', !checkbox.is(':checked')); 

}); 

チェックボックスの状態に基づいて、 '必要な' プロパティを切り替える:

擬似コード:

onSubmitPressed: function(){ 
    if(checkbox is checked){ 
     // alert user field is required; 
     return false; 
    }else{ 
     return true; 
    } 
0

私はいくつかの構文が間違っているように見えますが、エラーを投げていませんでした。

$(document).on('change', 'input[type=checkbox]', function() { 
    var checkbox = $(this), 
    otherInput = $('#comments' + this.id.replace('tag', '')); 

    otherInput.removeProp('required', !checkbox.is(':checked')); 

    if ($(this).is(':not(:checked)')){ 
    otherInput.prop('required',true); 
    console.log('working'); 
    } 
}); 

これで、チェックボックスがオンまたはオフになっているため、必要な属性が追加および削除されるようになりました。

関連する問題