如何从前端将 ASP.net 下拉列表索引设置为 0
How to set ASP.net dropdownlist index to 0 from the front-end
我在 ASP.net 页面中有以下代码:
<asp:DropDownList ClientIDMode="Static" ID="ddl1" CssClass="chosen-select le" runat="server" AppendDataBoundItems="true"></asp:DropDownList>
<asp:DropDownList ClientIDMode="Static" ID="ddl2" CssClass="chosen-select le" runat="server" AppendDataBoundItems="true"></asp:DropDownList>
<asp:DropDownList ClientIDMode="Static" ID="ddl3" CssClass="chosen-select le" runat="server" AppendDataBoundItems="true"></asp:DropDownList>
<input type="button" id="ClearForm" value="Clear" class="btn1" />
JQuery 将所有三个下拉列表的索引设置为 0:
$(function () {
$("body").on("click", "#ClearForm", function (e) {
e.preventDefault();
$("select#ddl1, select#ddl2, select#ddl3").prop('selectedIndex', 0); //does not set the selected index to 0
alert($("select#ddl1").text()); //displays all the options from #ddl1
});
});
如何修改,使下拉列表索引设置为 0。
HTML 第一个下拉列表的渲染:
<select name="ctl00$BodyPlaceHolder$ddl1" id="ddl1" class="le">
<option value="Select a State">Select a State</option>
<option value="Alabama">AL</option>
<option value="Alaska">AK</option>
<option value="Arizona">AZ</option>
</select>
我尝试了以下 JQuery 并且 returns null
:
alert($("select#ddl1").val());
也尝试了以下方法,但没有用:
$('select').each(function () {
$(this).find('option:first').prop('selected', 'selected');
});
添加了以下内容JavaScript:
function setSelectedIndex(dropdownlist, selVal) {
var ddl1 = document.getElementById(dropdownlist);
alert(ddl1.selectedIndex);
if (ddl1.length >= selVal) { //if the selected value is greater then 0, the alert is shown but the value is not set back to 0.
ddl1.selectedIndex = selVal;
alert("greater or equal");
}
else {
alert("not greater or equal");
}
}
似乎,如果我删除选择的 Jquery 它工作正常:http://jsfiddle.net/bpbvhsay/
有很多方法可以做到这一点,但这里是 JavaScript 的解决方案:
function setSelectedIndex(dropdownlist, selVal)
var ddl1 = document.getElementById(dropdownlist);
//alert(ddl1.selectedIndex); //displays the proper index...
if(ddl1.length >= selVal)
{
ddl1.selectedIndex = selVal;
}
}
根据您的需要调用上述函数如下:
setSelectedIndex('<%=ddl1.ClientID %>', 2);
UPDATE 正如你所说你已经设置 ClientIDMode
,试试下面的更新函数:
function setSelectedIndex(selVal){
var ddl1 = document.getElementById('ddl1');
if(ddl1.length >= selVal)
{
ddl1.selectedIndex = selVal;
}
}
并将其命名为:
setSelectedIndex(0);
我使用的是 Chosen Jquery,导致下拉列表无法更新。
这是HTML:
<select name="ctl00$BodyPlaceHolder$ddl1" id="ddl1" class="chose-select le">
<option value="Select a State">Select a State</option>
<option value="Alabama">AL</option>
<option value="Alaska">AK</option>
<option value="Arizona">AZ</option>
</select>
JavaScript 将所选索引设置为 0:
function setSelectedIndex(dropdownlist, selVal) {
var ddl1 = document.getElementById(dropdownlist);
if (selVal < ddl1.selectedIndex) {
ddl1.selectedIndex = selVal;
$(ddl1).val(0).trigger('chosen:updated');
}
}
那就行了。
我在 ASP.net 页面中有以下代码:
<asp:DropDownList ClientIDMode="Static" ID="ddl1" CssClass="chosen-select le" runat="server" AppendDataBoundItems="true"></asp:DropDownList>
<asp:DropDownList ClientIDMode="Static" ID="ddl2" CssClass="chosen-select le" runat="server" AppendDataBoundItems="true"></asp:DropDownList>
<asp:DropDownList ClientIDMode="Static" ID="ddl3" CssClass="chosen-select le" runat="server" AppendDataBoundItems="true"></asp:DropDownList>
<input type="button" id="ClearForm" value="Clear" class="btn1" />
JQuery 将所有三个下拉列表的索引设置为 0:
$(function () {
$("body").on("click", "#ClearForm", function (e) {
e.preventDefault();
$("select#ddl1, select#ddl2, select#ddl3").prop('selectedIndex', 0); //does not set the selected index to 0
alert($("select#ddl1").text()); //displays all the options from #ddl1
});
});
如何修改,使下拉列表索引设置为 0。
HTML 第一个下拉列表的渲染:
<select name="ctl00$BodyPlaceHolder$ddl1" id="ddl1" class="le">
<option value="Select a State">Select a State</option>
<option value="Alabama">AL</option>
<option value="Alaska">AK</option>
<option value="Arizona">AZ</option>
</select>
我尝试了以下 JQuery 并且 returns null
:
alert($("select#ddl1").val());
也尝试了以下方法,但没有用:
$('select').each(function () {
$(this).find('option:first').prop('selected', 'selected');
});
添加了以下内容JavaScript:
function setSelectedIndex(dropdownlist, selVal) {
var ddl1 = document.getElementById(dropdownlist);
alert(ddl1.selectedIndex);
if (ddl1.length >= selVal) { //if the selected value is greater then 0, the alert is shown but the value is not set back to 0.
ddl1.selectedIndex = selVal;
alert("greater or equal");
}
else {
alert("not greater or equal");
}
}
似乎,如果我删除选择的 Jquery 它工作正常:http://jsfiddle.net/bpbvhsay/
有很多方法可以做到这一点,但这里是 JavaScript 的解决方案:
function setSelectedIndex(dropdownlist, selVal)
var ddl1 = document.getElementById(dropdownlist);
//alert(ddl1.selectedIndex); //displays the proper index...
if(ddl1.length >= selVal)
{
ddl1.selectedIndex = selVal;
}
}
根据您的需要调用上述函数如下:
setSelectedIndex('<%=ddl1.ClientID %>', 2);
UPDATE 正如你所说你已经设置 ClientIDMode
,试试下面的更新函数:
function setSelectedIndex(selVal){
var ddl1 = document.getElementById('ddl1');
if(ddl1.length >= selVal)
{
ddl1.selectedIndex = selVal;
}
}
并将其命名为:
setSelectedIndex(0);
我使用的是 Chosen Jquery,导致下拉列表无法更新。
这是HTML:
<select name="ctl00$BodyPlaceHolder$ddl1" id="ddl1" class="chose-select le">
<option value="Select a State">Select a State</option>
<option value="Alabama">AL</option>
<option value="Alaska">AK</option>
<option value="Arizona">AZ</option>
</select>
JavaScript 将所选索引设置为 0:
function setSelectedIndex(dropdownlist, selVal) {
var ddl1 = document.getElementById(dropdownlist);
if (selVal < ddl1.selectedIndex) {
ddl1.selectedIndex = selVal;
$(ddl1).val(0).trigger('chosen:updated');
}
}
那就行了。