2016-09-26 1 views
1

私のフォームにはドロップダウンリストが4つあり、1番目(category1)または2番目(software1)のドロップダウンリストを選択した場合、 4番目(ソフトウェア2)を無効にする必要があります。この問題については1stまたは2nrが選択されている場合、3番目、4番目のドロップダウンリストを無効にする

私はdisable-second-dropdown-if-the-first-is-not-selectedでこのスクリプトを見つけることが、私はこれを修正するために信頼していない:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
category1 
<select name='cat1'> 
    <option value='0'>Select one</option> 
    <option value='1'>little</option> 
    <option value='2'>good</option> 
</select> 

software1 
<select name='soft1'> 
    <option value=''>Select one</option> 
    <option value='W'>Word</option> 
    <option value='E'>Excel</option> 
    <option value='PP'>Power Point</option> 
</select> 

<br /> 
category2 
<select name='cat2'> 
    <option value='0'>Select one</option> 
    <option value='1'>little</option> 
    <option value='2'>good</option> 
</select> 

software2 
<select name='soft2'> 
    <option value=''>Select one</option> 
    <option value='W'>Word</option> 
    <option value='E'>Excel</option> 
    <option value='PP'>Power Point</option> 
</select> 

<script type="text/javascript"> 
var setEnabled = function(e) { 
    var name = this.name.replace(/1/, '2'); //get name for second drop down 
    $('select[name=' + name + ']') 
     .prop('disabled', 0 === this.selectedIndex) // disable if selected option is first one 
}; 

$(function() { 
    $('select[name=cat1], select[name=soft1]') 
     .on('change', setEnabled) 
     .trigger('change'); // trigger on page load 
}); 
</script> 

これを修正する方法は?

おかげ

+0

底面のか、右側の3番目と4番目のドロップダウンしていますか?一番下のものは無効になります – depperm

+0

無効にすると、それらを「選択する」に設定しますか? –

+0

@ depperm:私は投稿を編集しました – Frankie

答えて

2

私はあなたがしたい主なものは、これはトップ入力の両方が下入力の有効/無効をトリガ行列、に取り組んで取得する、しかし!==

ため===を反転することだと思う、あなたいずれかの変更に際して両方をテストする必要があります。

var setEnabled = function(e) { 
 
    var selected = $('select[name=cat1]').prop('selectedIndex') > 0 || $('select[name=soft1]').prop('selectedIndex') > 0; 
 
    $('select[name=cat2], select[name=soft2]').prop('disabled', selected); // disable if selected option is first one 
 
    if (selected) { 
 
    $('select[name=cat2], select[name=soft2]').prop('selectedIndex', 0) 
 
    } 
 
}; 
 

 
$(function() { 
 
    $('select[name=cat1], select[name=soft1]') 
 
     .on('change', setEnabled) 
 
     .trigger('change'); // trigger on page load 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
</script> 
 
category1 
 
<select name='cat1'> 
 
    <option value='0'>Select one</option> 
 
    <option value='1'>little</option> 
 
    <option value='2'>good</option> 
 
</select> 
 

 
software1 
 
<select name='soft1'> 
 
    <option value=''>Select one</option> 
 
    <option value='W'>Word</option> 
 
    <option value='E'>Excel</option> 
 
    <option value='PP'>Power Point</option> 
 
</select> 
 

 
<br /> 
 
category2 
 
<select name='cat2'> 
 
    <option value='0'>Select one</option> 
 
    <option value='1'>little</option> 
 
    <option value='2'>good</option> 
 
</select> 
 

 
software2 
 
<select name='soft2'> 
 
    <option value=''>Select one</option> 
 
    <option value='W'>Word</option> 
 
    <option value='E'>Excel</option> 
 
    <option value='PP'>Power Point</option> 
 
</select>

+0

OKです。 category1を選択すると、category2とsoftware2を無効にしてクリーンアップする必要があります。 – Frankie

+0

@Frankie - クリーニングコードを追加しました。今度はダブルテストを行います –

+0

@Frankie all done –

関連する問題