如何有一个控制动态显示(选择一个下拉选项后)
所以说我有一个下拉的控制,并且用户使用下拉之后,我想一个复选框和标签出现,AJAX风格,没有一个完整的回发。如何有一个控制动态显示(选择一个下拉选项后)
我如何能实现这样的事情?代码示例(或指向它们的链接)会很好。
我打得四处这一些使用的UpdatePanel,但我不能获得工作的权利......
你可以像这样的东西做到这一点:
<script type="text/javascript">
function showOptions(val) {
$('.option').hide();
$('.option' + val).show();
}
</script>
<style>
.option { border:solid 1px blue; display: none; }
</style>
<select id="dropdown" onchange="showOptions(this.value)">
<option value="1">select an option:</option>
<option value="1">one</option>
<option value="2">two</option>
<option value="3">three</option>
</select>
<div class="option option1">put controls for option 1 here</div>
<div class="option option2">put controls for option 2 here</div>
<div class="option option3">put controls for option 3 here</div>
注:这是使用jquery 。
你可以看到,用一个工作示例这里的实验:http://jsbin.com/owoho
我已经把一个小例子(使用jQuery),以帮助您开始:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
// bind an event handler to the select's change event
$("#testSelect").change(function() {
// create a label from the text of the selected option
var $label = $("<label>" + $(this).text() + "</label>");
// create a checkbox
var $checkbox = $('<input type="checkbox"/>');
// append the label and checkbox to the next div, reveal it with animation
$(this).next("div")
.empty()
.append($label)
.append($checkbox)
.show("slow");
});
});
</script>
<select id="testSelect">
<option value="foo" selected="selected">Hello</option>
<option value="test">Wooo</option>
</select>
<div style="display:none"></div>
我喜欢@具有页面上隐藏的项目,然后显示在必要时他们马丁的做法。如果可能的话,最好避免在代码中构建标记。 – 2010-03-05 17:23:23
嗯,如果你是只是想在下拉列表更改时向服务器发布一些数据,而不是使用jQuery(我的首选项)。
<asp:DropDownList ID="DropDown" runat="server" onchange="javascript: ajaxCall();">
</asp:DropDownList>
然后您的JavaScript看起来是这样的。
function ajaxCall() {
$.ajax({
type: "POST",
url: "Services/Services.aspx/SomeMethod",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: "{}", // send some data if you need to
beforeSend: function() {
//do some things before the request is made
},
success: function(msg) {
chkBox.show();
spanOrDivName.show();
}
});
};
有许多方法可以使与jQuery Ajax调用,但我用这一个,因为它是最强大的,我不知道你需要它做什么。
我不认为@Albert被询问如何与这里的服务器交互 - 只是如何显示隐藏和控制基于用户所做的页面上。 – 2010-03-05 17:22:27
你可能是对的,但我添加了ajax代码,因为他说他想做“AJAX风格”。我看到其他样本涵盖了你的建议,所以我增加了一些不同的东西。 – WVDominick 2010-03-05 20:38:02
为什么你需要任何* *回发只是一个复选框和标签出现? – Robusto 2010-03-04 19:32:44
真的,我只是想强调的是,我不想做一个回发...想我可以有措辞更好 – Albert 2010-03-04 19:34:56