AJAX绑定Select 下拉,加载的时候如何获取下拉的第一个值

Soul2016 2018-04-04 03:55:55

通过AJAX 后台绑定一个下拉,加载数据没问题,数据如:

2018
2017

我想 加载的时候就默认获取第一个值2018,可是各种写法就是获取不了,哪里问题。


但通过手动选择,触发 通过change 我可以获取2018 2017 的数值。

$("#dllYear").change(function () {
//获取选中的value值
var selectVlaue = $(this).find("option:selected").val();
alert(selectVlaue);
});


<div style="width:49%; float:left">
<label for="Yearname">Year \ 年:</label>
<div>
<select id="dllYear" class="form-control">
</select>
</div>
</div>



function BindYear(fType, seleparm, corpCode, lang) {
$.ajax({
type: "get",
url: '@Url.Action("GetDllList", "Board")',
data: { fType: fType, seleparm: seleparm, corpCode: corpCode, lang: lang },
dataType: "json",
contentType: "application/json",
success: function (data) {
var ddl = $("#dllYear");
//添加默认
//ddl.append("<option value='-1'>--请选择--</option>");
//转成Json对象
var result = eval(data);
var i = 0;
//循环遍历 下拉框绑定
$(result).each(function (i) {
//var opt = $("<option></option>").text(result[key].FISCAL_YR).val(result[key].FISCAL_YR);
//ddl.append(opt);
if (i == 0)
{
ddl.append("<option value=" + i + " selected>" + result[i].FISCAL_YR + "</option>");
}
else
{
ddl.append("<option value=" + i + ">" + result[i].FISCAL_YR + "</option>");
}
i = i + 1;
});
}
});

}
...全文
812 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Soul2016 2018-04-09
  • 打赏
  • 举报
回复
引用 5 楼 apollokk 的回复:
[quote=引用 3 楼 Soul2016 的回复:] 是执行之后的啊 ,页面都看的到 绑定的数据,手动选都可以获取的到。就是加载的时候想获取 第一个值。

        $(document).ready(function () {

            BindYear('FISCAL_YR', '', '', '');
    
            //获取不了 第一个加载值
            // var tev = document.getElementById("dllYear").value;
            // var tev = $("#dllYear").find("option:selected").text();
            // var tev = $("#dllYear").find("option:first").text();
            //var tev = $("#dllYear").val();
             alert(tev);
            return false;
        });
你这没有绑定就执行后面代码了,除非在ajax里加入async:false选项,或者用#2的代码,在回调中访问[/quote] async: false, 是加这个,哎 这2年写代码少了。非常感谢您!
Hello World, 2018-04-04
  • 打赏
  • 举报
回复
引用 3 楼 Soul2016 的回复:
是执行之后的啊 ,页面都看的到 绑定的数据,手动选都可以获取的到。就是加载的时候想获取 第一个值。

        $(document).ready(function () {

            BindYear('FISCAL_YR', '', '', '');
    
            //获取不了 第一个加载值
            // var tev = document.getElementById("dllYear").value;
            // var tev = $("#dllYear").find("option:selected").text();
            // var tev = $("#dllYear").find("option:first").text();
            //var tev = $("#dllYear").val();
             alert(tev);
            return false;
        });
你这没有绑定就执行后面代码了,除非在ajax里加入async:false选项,或者用#2的代码,在回调中访问
天际的海浪 2018-04-04
  • 打赏
  • 举报
回复
引用 3 楼 Soul2016 的回复:
是执行之后的啊 ,页面都看的到 绑定的数据,手动选都可以获取的到。就是加载的时候想获取 第一个值。

        $(document).ready(function () {

            BindYear('FISCAL_YR', '', '', '');
    
            //获取不了 第一个加载值
            // var tev = document.getElementById("dllYear").value;
            // var tev = $("#dllYear").find("option:selected").text();
            // var tev = $("#dllYear").find("option:first").text();
            //var tev = $("#dllYear").val();
             alert(tev);
            return false;
        });
ajax是异步加载的。 ajax的 success: function (data) 函数也是异步执行的, 使用ajax一定要了解“异步”的概念。 就是说,$.ajax()之后的代码会先执行,这时option元素还都没有添加,当然获取不到。 success: function (data) 函数是在异步加载完毕之后才执行,要在这时才能获取到数据。
Soul2016 2018-04-04
  • 打赏
  • 举报
回复
是执行之后的啊 ,页面都看的到 绑定的数据,手动选都可以获取的到。就是加载的时候想获取 第一个值。

        $(document).ready(function () {

            BindYear('FISCAL_YR', '', '', '');
    
            //获取不了 第一个加载值
            // var tev = document.getElementById("dllYear").value;
            // var tev = $("#dllYear").find("option:selected").text();
            // var tev = $("#dllYear").find("option:first").text();
            //var tev = $("#dllYear").val();
             alert(tev);
            return false;
        });
天际的海浪 2018-04-04
  • 打赏
  • 举报
回复
function BindYear(fType, seleparm, corpCode, lang) { $.ajax({ type: "get", url: '@Url.Action("GetDllList", "Board")', data: { fType: fType, seleparm: seleparm, corpCode: corpCode, lang: lang }, dataType: "json", contentType: "application/json", success: function (data) { var ddl = $("#dllYear"); //添加默认 //ddl.append("<option value='-1'>--请选择--</option>"); //转成Json对象 var result = eval(data); var i = 0; //循环遍历 下拉框绑定 $(result).each(function (i) { //var opt = $("<option></option>").text(result[key].FISCAL_YR).val(result[key].FISCAL_YR); //ddl.append(opt); if (i == 0) { ddl.append("<option value=" + i + " selected>" + result[i].FISCAL_YR + "</option>"); } else { ddl.append("<option value=" + i + ">" + result[i].FISCAL_YR + "</option>"); } i = i + 1; }); //要在option元素都添加之后才能获取 var selectVlaue = ddl.find("option:selected").val(); alert(selectVlaue); } }); }
Soul2016 2018-04-04
  • 打赏
  • 举报
回复
简单说,如何在绑定完后,获取第一个数据:2018, 各种写法都获取不了,数据绑定是没问题的。 请有时间 帮忙下 谢谢! var teval = document.getElementById("dllYear").value; var teval = $("#dllYear").find("option:selected").text(); var teval = $("#dllYear").find("option:first").text(); var teval =$("#dllYear").val(); 但 通过手动选择下拉,就可以获取的到。

87,954

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧