这是一个经典问题,但无法找到最佳方法。我有一个id为project_billing_code_id的下拉列表和3个值(1,2,3)。
如果选择的值= 1,则显示id为1且仅为此的div。 div二和三必须隐藏。 我还希望在加载视图时实现这一点,而不仅仅是在更改时。
$(document).ready(function() {
$("#hourly").hide();
$("#per_diem").hide();
$("#fixed").hide();
$("#project_billing_code_id").change(function() {
if ($("#project_billing_code_id").val() == '1') {
$("#hourly").show();
}
else if ($("#project_billing_code_id").val() == '2') {
$("#per_diem").show();
}
else if ($("#project_billing_code_id").val() == '3') {
$("#fixed").show();
}
else {
$("#hourly").hide();
$("#per_diem").hide();
$("#fixed").hide();
}
});
});
答案 0 :(得分:17)
你很亲密。您可能需要对行为进行一些小的调整,以确保所有div都隐藏,并且在页面加载时显示正确的div。
在这里播放代码:http://jsfiddle.net/irama/ZFzrA/2/
或者在这里获取更新的JS代码:
hideAllDivs = function () {
$("#hourly, #per_diem, #fixed").hide();
};
handleNewSelection = function () {
hideAllDivs();
switch ($(this).val()) {
case '1':
$("#hourly").show();
break;
case '2':
$("#per_diem").show();
break;
case '3':
$("#fixed").show();
break;
}
};
$(document).ready(function() {
$("#project_billing_code_id").change(handleNewSelection);
// Run the event handler once now to ensure everything is as it should be
handleNewSelection.apply($("#project_billing_code_id"));
});
告诉我们您的情况!
答案 1 :(得分:3)
不要使用hide from document.ready,因为它必须等待dom加载。添加内联样式=“display:none;”
删除if语句中的$(“#project_billing_code_id”)赋值,并使用它,因为您已经可以通过事件处理程序访问dom元素,使用$(this).val()或this.val() 。还可以重复使用代码,以便可以从不同的脚本调用它。
var PayRate = (function(){
var _obj = {};
var hideShow = function(elem){
if($(elem).val() === '1'){
$("#hourly").show();
}else if($(elem).val() === '2'){
$("#per_diem").show();
}else if($(elem).val() === '3'){
$("#fixed").show();
}else{
$("#hourly, #fixed, #per_diem").hide();
}
};
_obj.checkValue = function(){
hideShow($('#project_billing_code_id'))
};
var events = function(){
$('#project_billing_code_id').change(function(){
hideShow(this);
});
};
$(document).ready(function(){
events ();
checkValue ();
});
return _obj;
}());
我没有对上述内容进行测试,因此您可能需要进行一些更改。我想你明白了。 :)
答案 2 :(得分:1)
<强> Working Fiddle 强>
这就是我让它为我工作的方式。
<强> JS 强>
$(document).ready(function (e) {
$('#reasonDropDown').change(function () {
if ($(this).val() == 'other') {
$('.otherReasonTextBox').show();
} else {
$('.otherReasonTextBox').hide();
}
});
});
<强> CSS 强>
.otherReasonTextBox {
display:none;
}
<强> HTML 强>
<select id="reasonDropDown" name="Select">
<option>Select One</option>
<option>Select Two</option>
<option>Select Three</option>
<option value="other" id="other">Other</option>
</select>
<div class="otherReasonTextBox">Other Reason Textbox</div>
答案 3 :(得分:0)
$(document).ready(function() {
setOptions(); // on load
$('#Drodown_id').change(setOptions); // on change
function setOptions() {
switch ($("#Drodown_id").val()) {
case "option_1" :
$("#div1").show();
$('#div2').hide();
break;
case "option_2":
$("#div1").hide();
$("#div2").show();
break;
case "option_3":
$("#div1").show();
$("#div2").show();
break;
case "":
$("#div1").hide();
$("#div2").hide();
break;
}
});
});