求一个select2 ajax请求后台数据搜索下拉框功能 并回显选中项的demo 20C

软件后台是java编写的
求一个select2 ajax请求后台数据搜索下拉框功能 并回显选中项的demo

https://www.cnblogs.com/-mrl/p/7650156.html
这个帖子我已经试过了 搜索功能失效 不要在推荐了

强调一下 是用ajax请求的数据 而不是用本地的方式注入

7个回答

 $('select').select2({
  ajax: {
    url: "https://api.github.com/search/repositories",
    dataType: 'json',
    data: function (params) {
      var query = { //请求的参数, 关键字和搜索条件之类的
        search: params.term //select搜索框里面的value
      }

      // Query paramters will be ?search=[term]&page=[page]
      return query;
    },
    delay: 1500,
    processResults: function (data, params) {
      //返回的选项必须处理成以下格式
      //var results =  [{ id: 0, text: 'enhancement' }, { id: 1, text: 'bug' }, { id: 2, text: 'duplicate' }, { id: 3, text: 'invalid' }, { id: 4, text: 'wontfix' }];

      return {
        results: results  //必须赋值给results并且必须返回一个obj
      };
    }

  }
});
u012503756
bulidfer 不行的 这个方法我也试过了
接近 2 年之前 回复

图片说明

这些都试了 不行的

 /* 1-本地注入方式 */

        /*$(".downList2").select2({
            // $("select[name='xuewei_id']").select2({
            // $('select[id="xuewei_id"]').select2({
            // $('#xuewei_id').select2({

            placeholder : "请至少选择一个人名",
            tags : true,
            createTag : function(decorated, params) {
                return null;
            },
            width : '256px',

        });*/
        // 2- AJAX获取数据方式
      $(".downList2").select2({
          ajax: {
            type:'GET',
            url: 'http://localhost:8080/erzhentang/manage/forAjax.do?requestType=12.5_1',
            dataType: 'json',
            delay: 250,
            data: function (params) {
              return {
                q: params.term, // search term 请求参数
                page: params.page
              };
            },
            processResults: function (data, params) {
              params.page = params.page || 1;
              var itemList = [];
              var arr = data.result.list
              for(item in arr){
                  itemList.push({id: item, text: arr[item]})
              }
              return {
//              results: data.items,//itemList
                results: data,//itemList
                pagination: {
                  more: (params.page * 2) < data.total_count
                }
              };
            },
            cache: true
          },
          placeholder:'请选择',//默认文字提示
          language: "zh-CN",
          tags: true,//允许手动添加
        createTag : function(decorated, params) {
            return null;
        },
          allowClear: true,//允许清空
          escapeMarkup: function (markup) { return markup; }, // 自定义格式化防止xss注入
          minimumInputLength: 0,
          formatResult: function formatRepo(repo){return repo.text;}, // 函数用来渲染结果
          formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择
        });

$("#select2").select2({
placeholder: "请选择",
language: "zh-CN",
ajax: {
url: "apiurl",//接口地址
dataType: 'json',
delay: 250,
data: function (params) {
return {
search: params.term, // search term
};
},
processResults: function (data, params) {
var result = $.map(data.rows,
function (v, k) {
return { id: v.Id, text: v.Name };
});
return {
results: result
};
},
cache: true
},
escapeMarkup: function (markup) { return markup; }, // 字符转义处理
minimumInputLength: 1,
templateResult:function (repo) {
if (repo.loading) {
return repo.text;
}
return repo.text;
},
templateSelection: function (repo) { return repo.text }
});

图片说明

 <!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>select2</title>
    <!-- Tell the browser to be responsive to screen width -->
    <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
    <!-- Bootstrap 3.3.5 -->
    <link rel="stylesheet" href="http://apps.bdimg.com/libs/bootstrap/3.3.4/css/bootstrap.min.css">
    <script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
    <!-- select2 style --> 
    <link rel="stylesheet" href="select2.min.css">
      <script src="select2.full.min.js"></script>

  </head>

  <body class="hold-transition skin-blue sidebar-mini" style="background-color:#ecf0f5;">
    <!-- Main content -->
    <section class="content container" style="margin-top: 15px;">
        <div class="col-sm-4">
            <h3>本地数据方式</h3>
            <select class="form-control input-sm downList1">
                <option></option>
            </select>
            <p class="p1"></p>
            <hr>
            <button type="button" class="btn btn-sm btn-primary" id="one">click</button>
        </div>
        <div class="col-sm-4">
            <h3>AJAX获取数据方式</h3>
            <select class="form-control input-sm downList2" multiple>
                <option></option>
            </select>
            <p class="p2"></p>
            <hr>
            <button type="button" class="btn btn-sm btn-primary" id="two">click</button>
        </div>
        </section><!-- /.content -->



  </body>
  <script>
    //one  本地数据方式
    var dataList = [
            { id: 0, text: 'enhancement' }, 
            { id: 1, text: 'bug' }, 
            { id: 2, text: 'duplicate' }, 
            { id: 3, text: 'invalid' }, 
            { id: 4, text: 'wontfix' }
          ];
    $(".downList1").select2({
        data: dataList,
        placeholder:'请选择',//默认文字提示
        language: "zh-CN",
        allowClear: true//允许清空
    })
    $('#one').click(function(){
        var id = $(".downList1").select2("data")[0].id;
        var text = $(".downList1").select2("data")[0].text;
        var html = '您选择了:' + '{ id:' + id + ', ' + 'text: ' + text + ' }';
        $('.p1').text(html);
    })
    //two  AJAX获取数据方式
    $(".downList2").select2({
      ajax: {
        type:'GET',
        url: 'data.php',
        dataType: 'json',
        delay: 250,
        data: function (params) {
          return {
            q: params.term, // search term 请求参数
            page: params.page
          };
        },
        processResults: function (data, params) {
          params.page = params.page || 1;
          /*var itemList = [];
          var arr = data.result.list
          for(item in arr){
              itemList.push({id: item, text: arr[item]})
          }*/
          return {
            results: data.items,//itemList
            pagination: {
              more: (params.page * 2) < data.total_count
            }
          };
        },
        cache: true
      },
      placeholder:'请选择',//默认文字提示
      language: "zh-CN",
      tags: true,//允许手动添加
      allowClear: true,//允许清空
      escapeMarkup: function (markup) { return markup; }, // 自定义格式化防止xss注入
      minimumInputLength: 0,
      formatResult: function formatRepo(repo){return repo.text;}, // 函数用来渲染结果
      formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择
    });
    $('#two').click(function(){
        var userList = $(".downList2").select2("data");
        var user = [];

        for(var i=0;i<userList.length;i++){
            user.push(userList[i].id)
        }
        $('.p2').text(user);
    })
  </script>

</html>

我写了一个test 感觉跟你代码一样 没什么问题 是不是你其他地方的问题 你可以下载看看

https://pan.baidu.com/s/1W1te6rWD1WLv-FKMZNzMOw

插件 jQuery autocomplete

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
select2 ajax获取java后台下拉框数据 并回显选中的值

用ajax 请求后台值后 发现 下拉框没有搜索功能了 ![图片说明](https://img-ask.csdn.net/upload/201808/05/1533440496_530669.png) ``` * 执行select2方法初始化 */ function select2Execute() { var dataList = [ { id: 0, text: 'enhancement' }, { id: 1, text: 'bug' }, { id: 2, text: 'duplicate' }, { id: 3, text: 'invalid' }, { id: 4, text: 'wontfix' } ]; var dataList1=[{'id':"1","text":"enhancement"}]; $(function() { /*本地注入方式*/ $(".downList2").select2({ // $("select[name='xuewei_id']").select2({ // $('select[id="xuewei_id"]').select2({ // $('#xuewei_id').select2({ // $("#selectSection").find("select.combox").select2({ // $(".select2-selection__choice").select2(); // $(".combox").select2({ placeholder : "请至少选择一个人名", tags : true, createTag : function(decorated, params) { return null; }, width : '256px', ajax: { url: '/erzhentang/manage/forAjax.do?requestType=12.5_1', dataType: 'json', data: function (params) { var query = { //请求的参数, 关键字和搜索条件之类的 search: params.term //select搜索框里面的value } // Query paramters will be ?search=[term]&page=[page] return query; }, delay: 250, processResults: function (data, params) { //返回的选项必须处理成以下格式 var results = [{ id: 0, text: 'enhancement' }, { id: 1, text: 'bug' }, { id: 2, text: 'duplicate' }, { id: 3, text: 'invalid' }, { id: 4, text: 'wontfix' }]; return { results: results //必须赋值给results并且必须返回一个obj }; } }, allowClear: true,//允许清空 escapeMarkup: function (markup) { return markup; }, // 自定义格式化防止xss注入 minimumInputLength: 0, formatResult: function formatRepo(repo){return repo.text;}, // 函数用来渲染结果 formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择 }); //two AJAX获取数据方式 //$("select[name='xuewei_id']").select2({ /*$(".downList2").select2({ ajax: { type:'GET', url: '/erzhentang/manage/forAjax.do?requestType=12.5_1', // url: dataList1, dataType: 'json', delay: 250, data: function (params) { return { q: params.term, // search term 请求参数 page: params.page }; }, processResults: function (data, params) { params.page = params.page || 1; var itemList = []; var arr = data.result.list for(item in arr){ itemList.push({id: item, text: arr[item]}) } var itemList = []; var results = [{ id: 0, text: 'enhancement' }, { id: 1, text: 'bug' }, { id: 2, text: 'duplicate' }, { id: 3, text: 'invalid' }, { id: 4, text: 'wontfix' }]; var arr = result.list for(item in arr){ itemList.push({id: item, text: arr[item]}) } var results = [{ id: 0, text: 'enhancement' }, { id: 1, text: 'bug' }, { id: 2, text: 'duplicate' }, { id: 3, text: 'invalid' }, { id: 4, text: 'wontfix' }]; // var results=[{"id":"68","text":"平和质"},{"id":"104","text":"特禀质"}] return { // results: data.items,//itemList results: results , //必须赋值给results并且必须返回一个obj // results: data,//itemList pagination: { more: (params.page * 2) < data.total_count } }; }, cache: true }, placeholder:'请选择',//默认文字提示 language: "zh-CN", tags: true,//允许手动添加 allowClear: true,//允许清空 escapeMarkup: function (markup) { return markup; }, // 自定义格式化防止xss注入 minimumInputLength: 0, formatResult: function formatRepo(repo){return repo.text;}, // 函数用来渲染结果 formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择 });*/ function formatState(state) { if (!state.id) { return state.text; } var $state = $('<span>' + state.text + '</span>'); return $state; } ; $('#sel_recommender').select2({ placeholder : "请选择一个人名", templateResult : formatState, width : '256px' }); // 通过id获取select2的text值,这里的text值可能有空格,需注意 function getSelect2Text(obj) { var select2Obj = $("select[name='xuewei_id']").select2(); return select2Obj.find("option:selected").text(); } /* 获取每一个name对应的值 */ var strXueweiId = ""; $("[name=xuewei_id]").each(function() { alert("this值:" + $(this).val()); /* 拼接每一项name的值 组合成和其它项目类似 gender那样的数组 */ strXueweiId += $(this).val() + "-"; }); alert("strXueweiId:" + strXueweiId) $("#strXueweiId").val(strXueweiId) }); } ```

ajax 根据一个下拉框的值的不同 另一个下拉框对应显示的值也不同

![图片说明](https://img-ask.csdn.net/upload/201603/04/1457063583_136126.png) 图片就是这样的,项目的类别有商户和银行两种,我要根据选择商户还是银行,让下边对应的选择已有商户 的下拉框中显示不同的数据,数据都需要通过后台去数据库里查的。 这个是不是要ajax啊?谁能告诉告诉我怎么写 。急急急 。。在线等好心人。。。。。

请教:jQuery获得select选中的值,再用ajax提交到后台

jQuery获得select选中的值,再用ajax提交到后台。

select2 ajax 获取java后台数据 提示params is not defined

下拉框没有任何选项内容 ![图片说明](https://img-ask.csdn.net/upload/201808/05/1533410857_939033.png) js代码 ``` /* 执行select2方法初始化 */ function select2Execute() { var dataList = [ { id: 0, text: 'enhancement' }, { id: 1, text: 'bug' }, { id: 2, text: 'duplicate' }, { id: 3, text: 'invalid' }, { id: 4, text: 'wontfix' } ]; var dataList1=[{'id':"1","text":"enhancement"}]; $(function() { /*本地注入方式*/ /*$("select[name='xuewei_id']").select2({ // $('select[id="xuewei_id"]').select2({ // $('#xuewei_id').select2({ // $("#selectSection").find("select.combox").select2({ // $(".select2-selection__choice").select2(); // $(".combox").select2({ placeholder : "请至少选择一个人名", tags : true, createTag : function(decorated, params) { return null; }, width : '256px', });*/ //two AJAX获取数据方式 //$("select[name='xuewei_id']").select2({ $(".downList2").select2({ ajax: { type:'GET', // url: '/erzhentang/manage/forAjax.do?requestType=12.1', url: dataList1, dataType: 'json', delay: 250, data: function (params) { return { q: params.term, // search term 请求参数 page: params.page }; }, processResults: function (data, params) { params.page = params.page || 1; /*var itemList = []; var arr = data.result.list for(item in arr){ itemList.push({id: item, text: arr[item]}) }*/ return { results: data.items,//itemList pagination: { more: (params.page * 2) < data.total_count } }; }, cache: true }, placeholder:'请选择',//默认文字提示 language: "zh-CN", tags: true,//允许手动添加 allowClear: true,//允许清空 escapeMarkup: function (markup) { return markup; }, // 自定义格式化防止xss注入 minimumInputLength: 0, formatResult: function formatRepo(repo){return repo.text;}, // 函数用来渲染结果 formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择 }); function formatState(state) { if (!state.id) { return state.text; } var $state = $('<span>' + state.text + '</span>'); return $state; } ; $('#sel_recommender').select2({ placeholder : "请选择一个人名", templateResult : formatState, width : '256px' }); // 通过id获取select2的text值,这里的text值可能有空格,需注意 function getSelect2Text(obj) { var select2Obj = $("select[name='xuewei_id']").select2(); return select2Obj.find("option:selected").text(); } /* 获取每一个name对应的值 */ var strXueweiId = ""; $("[name=xuewei_id]").each(function() { alert("this值:" + $(this).val()); /* 拼接每一项name的值 组合成和其它项目类似 gender那样的数组 */ strXueweiId += $(this).val() + "-"; }); alert("strXueweiId:" + strXueweiId) $("#strXueweiId").val(strXueweiId) }); } ```

ajax异步刷新下拉框 form option

<form:select path="gender" id="gender" class="input-medium required"> <form:option value="" label="" /> <form:options items="${fns:getDictList('gender')}" itemLabel="label" itemValue="value" htmlEscape="false"/> </form:select> 项目用了jeesite框架,性别是存在数据字典中,想用ajax异步刷新下拉框 form option 实现回显功能 代码是这样的: var amntValue=null; var premValue=null; var genderValue=null; var ageMinValue=null; var ageMaxValue=null; var insuYearMinValue=null; var insuYearMaxValue=null; var insuYearFlagValue=null; if(flag==true){ data=planRateSid; $.ajax({ url:'${ctx}/product/ebizProductPlanMain/getPlanRate?data='+data, data:{}, type:'POST', success:function(data){ rateItem=data.oneRateItem; amntValue=rateItem.amnt; premValue=rateItem.prem; genderValue=rateItem.gender; ageMinValue=rateItem.ageMin; ageMaxValue=rateItem.ageMax; insuYearMinValue=rateItem.insuYearMin; insuYearMaxValue=rateItem.insuYearMax; insuYearFlagValue=rateItem.insuYearFlag; $("#amnt").val(amntValue); $("#prem").val(premValue); //性别这里 $("#gender").get(0).selectedIndex=1; //设置Select索引值为1的项选中 $("#gender").val(4); // 设置Select的Value值为4的项选中 $("#gender option[text='jQuery']").attr("selected", true); //设置Select的Text值为jQuery的项选中 $("#ageMin").val(ageMinValue); $("#ageMax").val(ageMaxValue); $("#insuYearMin").val(insuYearMinValue); $("#insuYearMax").val(insuYearMaxValue); $("#insuYearFlag").val(insuYearFlagValue); }, error:function(){ alert("系统异常,请稍后再试。"); } }); 然后页面没反应,有没有大神知道怎么完成。。。简单的option,但偏偏是form:option 不知道这个标签具体怎么用,还有回显的时候要怎么让后台传过来的比如性别是男 显示男,是女显示女

EasyUI combobox无法显示下拉框? 后台已经返回了正确的 JSON 格式的值

为什么会这样? java返回 response.setHeader("Content-type", "application/json"); out = response.getWriter(); out.write(json); out.flush(); json: [{'text':'china','value':'1'},{'text':'india','value':'2'}] 前端:<input id="codeNameCheckbox" class="easyui-combobox" data-options=" panelHeight:'150',url:'${path}/face/getCodesByAttrs.do', valueField:'value', textField:'text', width:180" /> 后台的方法是执行成功了的。 但是combobox总是在报 onLoadError

java前后台数据请求返回问题

![图片说明](https://img-ask.csdn.net/upload/201804/06/1522981331_665869.png)![![图片说明](https://img-ask.csdn.net/upload/201804/06/1522981219_852743.png)图片说明](https://img-ask.csdn.net/upload/201804/06/1522981210_225916.png)将后台list数据转化成jsonarray返回前台,前台访问list中元素的属性显示在下拉框中,执行只输出System.out.println("getDataset.java中2");哪里有问题? 后台.java代码 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub String test_name = request.getParameter("testname"); System.out.println("test_name: "+test_name); DBController con = new DBController(test_name); //查找list System.out.println("进入前"); List<DocumentBean> list = con.select(test_name); System.out.println("getDataset.java中"); System.out.println("list:"+list.get(0).getDatasetPath()); System.out.println("getDataset.java中2"); JSONArray list1=JSONArray.fromObject(list); System.out.println("getDataset.java中3"); response.setCharacterEncoding("UTF-8");//解决显示中文乱码问题 PrintWriter writer = response.getWriter(); writer.write(list1.toString()); writer.flush(); System.out.println("list:"+list.get(0).getId()); } 前台.jsp代码 <div class="form-group" id="select_now"> <label class="col-xs-3 control-label">选择已有数据集</label> <div class="col-xs-3"> <select class="form-control" name="select_dataset" id="select_dataset" onclick="getdatasets();"> </select> </div> </div> function getdatasets(){ $.ajax({ type : "POST", url:"<%=contextPath%>/getDatasets", data : { type : "0", testname : "自动分类", }, dataType : "text", async : false, context : null, success : function(list) { alert(typeof list); alert("成功1"); //下拉菜单选项显示数据库名,值为数据库的真实地址 $("#select_dataset").html(''); //alert("成功2"); for(var i = 0; i<list.length; i++){ var inner = ""; //alert("成功3"); inner += "<option value='" + list.get(i).getDatasetPath() +"'>" + list.get(i).getDataset() + "</option>"; $("#select_dataset").append(inner); } list=[]; alert("成功5"); } }) }

用jquery ajax从数据库获取数据实现二级联动

我的思路就是一级那里搞个select,然后利用ajax返回action。然后利用ajax那里不懂。哪位大神教我怎么做? 1、这是select, function select(){ var xitong=document.getElementById("xitong").value; $.ajax({ url:'/netbank/budiao/testaj', type:'post', dataType:'json', data:{"xitong.xitongname":xitong}, error: function(){ alert("服务器没有返回数据,可能服务器忙,请重试"); }, success:createshebeiname2 }); 2、这是/netbank/budiao/testaj', public String testaj(){ System.out.println("testaj"); String name=xitong.getXitongname(); System.out.println(name); shebeilist=budiaoBiz.getShebeibyname(xitong.getXitongname()); request.put("shebeilist", shebeilist); return "testaj"; } 3、这是struts.xml的一部分 <package name="budiao" namespace="/budiao" extends="json-default" > <action name="*" class="budiao" method="{1}"> <result name="testaj" type="json"></result> 结果:select选择的时候,能够打印出testaj和xitongname的值,还有alert("服务器没有返回数据,可能服务器忙,请重试");

一个ajax跳转两次,执行其他的ajax,所有的ajax都会执行一遍

``` <script type="text/javascript"> $(document).ready(function(){ $("#add").click(function(){ var obj=$("input[name=test]"); var check_val = []; for(k in obj){ if(obj[k].checked) check_val.push(obj[k].value); } if($("#show1").html("")!=null){ $("#show1").html(""); } for(var i=0;i<check_val.length;i++){ $("#show1").append("<tr><td name=\"quzhi\">"+check_val[i]+"</td><td><input name="+check_val[i]+" type=\"button\" value=\"删除\" onclick=\"del('"+check_val[i]+"','this')\"></td></tr>"); } $("#show1").append("<tr><td></td><td><input name=\"a1\" type=\"button\" value=\"生成文件\" onclick=\"a()\"></td></tr>"); }); $("#chaxun").click(function(){ alert("chaxun"); var select = $("#zyid"); var value = select.attr("value"); alert(value); var data = {"username":value}; var url="get"; $.ajax({ url : url, //后台处理的地址 type : "POST", data :data , dataType : "json", success : function(m) { //location.reload(true); alert("success!!"); var err = m.err; alert(err); }, error : function(m){ alert("error!!1"); var err = m.err; alert(err); //location.reload(true); } }); event.stopPropagation(); }); }); function a(){ alert("aaaa"); var input = $("input[name=a1]"); var tr = input.parent().parent().siblings(); var trlenght = tr.length; var td = []; $("#show1").find("td").each(function(i) { var t = $(this).text(); if(t!=""){ td.push(t); } }); alert(td); var data = {"td":td.toString()}; var url="get"; $.ajax({ url : url, //后台处理的地址 type : "POST", data :data , dataType : "json", success : function() { //location.reload(true); }, error : function(){ //location.reload(true); } }); } function del(tablename,e){ var input = $("input[name="+tablename+"]"); var tr = input.parent().parent(); tr.remove(); } function checkAll(checked){ var allCheckBoxs=document.getElementsByName("test") ; for (var i=0;i<allCheckBoxs.length ;i++){ if(allCheckBoxs[i].type=="checkbox"){ allCheckBoxs[i].checked=checked; } } } </script> ```

我用dropdownlist动态绑定数据,用ajax实现数据获取,第一遍遍历之后,不再刷新

我数据放在returndata.aspx的datatable中,第一次执行是可以的,当选择dropdownlist中不同的option会返回不同的信息,但是当遍历完datatable中的所有rows之后,dropdownlist的onchange事件失效了,获取的内容不再更新。 1. Defalut.aspx <script type="text/javascript" language="javascript"> var xmlhttp = null; function GETXMLHttpRequest() { if (document.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); } else { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } } function getInfo(value) { GETXMLHttpRequest(); var url = "ReturnData.aspx?id=" + value; xmlhttp.open("GET", url, true); xmlhttp.send(); xmlhttp.onreadystatechange = function () { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { document.getElementById("content").innerHTML = xmlhttp.responseText; } } } </script> <asp:DropDownList ID="DropDownList1" runat="server" onchange="getInfo(this.value)"> </asp:DropDownList> //dropdownlist的onchange事件调用上面的js Default.aspx的后台代码 private void ShowData() { string sql = "select * from stu"; DataTable dt = SqlHelper.ExecuteQurly(sql); DropDownList1.DataSource = dt; DropDownList1.DataTextField = "sname"; DropDownList1.DataValueField = "sid"; DropDownList1.DataBind(); }//从数据库中绑定dropdownlist的内容 ReturnData.aspx(default.aspx获取数据的页面) 后台代码 private void getData() { if (Request.QueryString["id"] == null) return; string id = Request.QueryString["id"].ToString(); if (id == "") return; string sql = string.Format("select * from stu where sid={0}", id); DataTable dt = SQLHelper.SqlHelper.ExecuteQurly(sql); Response.Write("<table><tr><td>学号</td><td>姓名</td><td>性别</td></tr>"); if (dt.Rows.Count <= 0) return; for (int i = 0; i < dt.Rows.Count; i++) { string sql2 = string.Format("<tr><td>{0}</td><td>{1}</td><td>{2}</td></tr>", dt.Rows[i][0].ToString(), dt.Rows[i][1].ToString(), dt.Rows[i][2].ToString()); Response.Write(sql2); } Response.Write("</table>"); Response.End(); }

bootstarp动态下拉框的实现

![图片说明](https://img-ask.csdn.net/upload/201704/09/1491719436_52420.jpg) ```<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@include file="/common/common.jsp"%> <%@page import="java.text.SimpleDateFormat"%> <html> <head> <% SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); String date = format.format(new Date()); %> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="renderer" content="webkit"> <meta http-equiv="Cache-Control" content="no-siteapp" /> <title>短信网关统计</title> </head> <body class="gray-bg" onload="initCharts()"> <div> <div class="text-center p-lg"> <form role="form" class="form-inline" id="order_form"> <div class=" col-sm-2" > <span >渠道名称:</span> <select id="channelCode" name="channelCode" >//name:向后台传递的数据 <option value="0" selected="selected">全部</option> <option value="1">BAM系统</option> <option value="1">积分俱乐部</option> <option value="1">移动统一门户网站</option> <option value="1">积分后台</option> </select> </div> <div class="form-group"> <input placeholder="选择日期" readonly value="<%=date%>" name="queryDate" id="queryDate"> </div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input class="btn btn-primary btn-sm" type="button" value="查询" onclick="TableSwitch(); sms_botton()" > </form> </div> </div> <div> <div class="col-sm-4"> <table id="smstable" class="table table-bordered"></table> </div> <div class="col-sm-4" align="right"> <div style="width: 100%; height: 100%; -webkit-tap-highlight-color: transparent; -webkit-user-select: none; position: relative; background: transparent;" id="querySmsGatewayStatistics"> </div> </div> </div> </body> <script type="text/javascript"> $(function() { var start = { elem : '#queryDate', //选择ID为START的input format : 'YYYY-MM-DD', //自动生成的时间格式 min : '1999-01-01', //设定最小日期为当前日期 max : laydate.now(), //最大日期 istime : true, //必须填入时间 istoday : true, //是否是当天 start : laydate.now(0, "YYYY-MM-DD") //设置开始时间为当前时间 }; laydate(start); }); /* 初始化表格 */ $(function() { var table = new smstable(); table.init(); }); var smstable = function() { var tabledemo = new Object(); tabledemo.init = function() { $('#smstable').bootstrapTable({ url : "<%=request.getContextPath()%>/SmsGatewayStatistics/SmsGatewayStatistics1.do",// 请求的HTML页的URL地址。 data : {"queryDate" : $("queryDate").val()},//(Map) :发送至服务器的 key/value 数据 type : "POST",//客户端请求的类型(JSON,XML,等等) dataType : "json", columns : [ {field : 'orgId',title : '渠道编码'}, {field : 'orgName',title : '渠道名称'}, {field : 'amount',title : '总量'} ], }); }; return tabledemo; } /* 总量echarts图 */ var myChart = echarts.init(document.getElementById('querySmsGatewayStatistics')); function initCharts(){ $.ajax({ url:"<%=request.getContextPath()%>/SmsGatewayStatistics/SmsGatewayStatistics1.do", data:{"queryDate" : $("#queryDate").val()}, type:"POST", success:function(json){ var orgId = [];//渠道编码 var orgName = [];//渠道名称 var amount = [];//总量 /* 循环除数组的数据 */ for(var i = 0;i<json.length;i++){ orgId[i] = json[i].orgId;//渠道编码 orgName[i] = json[i].orgName;//渠道名称 amount[i] = json[i].amount;//总量 } /* 柱状图 */ option = { tooltip : { trigger: 'axis', axisPointer : { // 坐标轴指示器,坐标轴触发有效 type : 'shadow' // 默认为直线,可选为:'line' | 'shadow' } }, legend: { data:['总量'] //表头数据 }, grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true }, xAxis : [ { type : 'category', data : ['${orgName}'] //x轴现实的数据 } ], yAxis : [ { type : 'value' } ], series : [ { name:'总量', type:'bar', data:amount,//这里写变量值 markLine : { lineStyle: { normal: { type: 'dashed' } }, } } ] }; //封装以上属性 myChart.setOption(option , function (param){ var hz = param.name; alert(hz) }); //查看一个对象中拥有的属性 myChart.on("click", function (param){ var ob = eval(param); var Property=""; var hz = param.name; var hzz = param.seriesIndex; alert(hz) alert(hzz) }); } //对应success })//对应ajax }//对应function </script> </html> 我的实现思路是:在数据库中查询出来的数据动态的展示到下拉框里边,当用户点击这个下拉框的时候地下表格里边弹出的是点击节点工程的表格数据, ```

在html里实现下拉菜单的二级联动(Ajax) 下拉菜单的数据怎么从数据库循环读取出来呢?

我看到网上有详细的 在jsp页面上做二级联动的方法 但是在循环读取的时候 jsp都用的JSTL标签库

获得select中option的value值

``` request.getParameter("");获得selsct中option的value值 下拉框<option>由getdataset()初始化,用下拉框选择某个option后,datasetpath = request.getParameter("");怎么获得<option>中的value值(路径),option有多个每个都有对应的value ``` 。![图片说明](https://img-ask.csdn.net/upload/201804/07/1523074392_447307.png) 下拉框部分: ``` div class="col-xs-3"> select class="form-control" name="select_dataset" id="select_dataset" </select </div 初始化函数 function getdatasets(){ $.ajax({ type : "POST", url:"<%=contextPath%>/getDatasets", data : { type : "0", testname : "自动分类", }, dataType : "json", async : false, context : null, success : function(jsonData) { if (jsonData && jsonData != '[]') { //下拉菜单选项显示数据库名,值为数据库的真实地址 var dataList = jsonData; var select_dataset = $("#select_dataset"); select_dataset.html(''); var inner = ""; for(var i = 0; i<dataList.length; i++){ var a=0; for(j=0;j<=i;j++){ if(dataList[i].dataset==dataList[j].dataset) a++; else continue; } if(a<=1) inner += "<option value= '"+dataList[i].datasetpath +"'>" + dataList[i].dataset + "</option>"; else continue; //inner += "<option value='" + dataList.get(i).getDatasetPath() +"'>" + dataList.get(i).getDataset() + "</option>"; } $("#select_dataset").append(inner); } } }); } 请求: if(isupload == 1){ datasetpath = request.getParameter("select_dataset"); } ```

用$.each处理从后台取到的json数据后该如何绑定到combobox

![图片说明](https://img-ask.csdn.net/upload/201904/18/1555575849_475935.png) 最终实现第一个combobox选择后第二个combobox的数据源会实时变化 ``` $('#ListEquStop').datagrid('selectRow', index) .datagrid('beginEdit', index); var ed = $('#ListEquStop').datagrid('getEditor', { index: index, field: field }); if (ed) { ($(ed.target).data('textbox') ? $(ed.target).textbox('textbox') : $(ed.target)).focus(); var ed1 = $('#ListEquStop').datagrid('getEditor', { index: index, field: 'EquStopTy' }); var ed2 = $('#ListEquStop').datagrid('getEditor', { index: index, field: 'EquStopId' }); //var editor1 = ed[0]; //var editor2 = ed[1]; //var editor3 = ed[2]; $(ed1.target).combobox({ onChange: function (newValue, oldValue) { $.ajax({ type: 'post', url: "/DMS/ProductionData/GetListByEquTy", data: { newValue: newValue }, async: false, success: function (data) { $.each(data, function (i, item) { var id = item.Id; var desc = item.EquStop_Desc //alert(id); //alert(desc); ## _**此处数据已取出,需进行绑定**_ }); } }); } }); } ``` 下面是界面部分 ``` { field: 'EquStopTy', title: '设备停止类型', width: 80, formatter: function (value, row) { return row.EquStop_Type; }, editor: { type: 'combobox', options: { url: '/DMS/EquStop/GetComboxDataByEquStopId', valueField: 'Id', textField: 'Name', method: 'post', //required: true, //missingMessage: '设备停止项目必选!', editable: false } } }, { field: 'EquStopId', title: '设备停止项目', width: 80, formatter: function (value, row) { return row.EquStop_Desc; }, editor: { type: 'combobox', options: { url: '/DMS/EquStop/GetComboxDataByEquStop', valueField: 'Id', textField: 'Name', method: 'post', editable:false } } } ``` 就是说我的desc如何绑定到第二个combobox上 ``` public ActionResult GetListByEquTy(string newValue) { List<DMS_EquStopModel> list = new List<DMS_EquStopModel>(); MyCommonHelp mycommonHelp = new MyCommonHelp(); StringBuilder sql = new StringBuilder(); sql.AppendFormat(@"select Id,EquStop_Desc as Name from DMS_EquStop where EquStop_Type = '{0}'", newValue); DataTable dt = DBHelp.GetDataTable(sql.ToString()); list = mycommonHelp.ConvertToList<DMS_EquStopModel>(dt); return Json(list, JsonRequestBehavior.AllowGet); } ```

Vue 中的三级联动问题?

<select > <option>---请选择---</option> <option v-for="(p,i) in pList" :key="i">{{a.name}}</option> </select> .... const addressApp = new Vue({ .... data:{ pList:[],//省列表 cList:[],//市列表 aList:[]//区列表 } .... }); 备注:aList是后台异步请求获取的值, 格式为:[ {name:"河北省",provinceId:"1001"}, {name:"河南省",provinceId:"1002"}, ... ] 需求: 当选中下拉框中的某个选项时,如何获取这个选项的provinceId,通过什么事件 并向后台发起一个异步的请求,通过provinceId,获取城市的列表 (option绑定单击事件并传递对象无法触发!)

关于layui表单搜索 后重载数据后结果无法显示?

主要问题是搜索条件在页面请求后 表单重载无法绑定搜索的参数![图片说明](https://img-ask.csdn.net/upload/201912/04/1575453896_95965.png)![图片说明](https://img-ask.csdn.net/upload/201912/04/1575453905_340443.png)![图片说明](https://img-ask.csdn.net/upload/201912/04/1575453911_113480.png)![图片说明](https://img-ask.csdn.net/upload/201912/04/1575453915_679438.png) 一直找不到原因 不知道是页面哪里没设置好

bootstraptable-edit使用问题

![图片说明](https://img-ask.csdn.net/upload/201908/06/1565077495_685813.png) 外部的表格无法获取数据,检查contentType属性配置问题。 ``` $(function() { //初始化Table var oTable = new TableInit(); oTable.Init(); }); var TableInit = function() { var oTableInit = new Object(); //初始化Table oTableInit.Init = function() { $('#table').bootstrapTable({ url : 'list',//请求后台的URL(*) method : 'post',//请求方式(*) toolbar : '#toolbar',//工具按钮用哪个容器 striped : true,//是否显示行间隔色 cache : false,//是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*) pagination : true,//是否显示分页(*) sortable : false,//是否启用排序 sortOrder : "asc",//排序方式 queryParams : oTableInit.queryParams,//传递参数(*) sidePagination : "server",//分页方式:client客户端分页,server服务端分页(*) pageNumber : 1,//初始化加载第一页,默认第一页 pageSize : 10,//每页的记录行数(*) pageList : [ 10, 25, 50, 100 ],//可供选择的每页的行数(*) search : true,//是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大 contentType : "application/x-www-form-urlencoded", strictSearch : true, showColumns : true,//是否显示所有的列 showRefresh : true,//是否显示刷新按钮 minimumCountColumns : 2,//最少允许的列数 clickToSelect : true,//是否启用点击选中行 height : 700,//行高,如果没有设置height属性,表格自动根据记录条数觉得表格高度 uniqueId : "id",//每一行的唯一标识,一般为主键列 showToggle : true,//是否显示详细视图和列表视图的切换按钮 cardView : false,//是否显示详细视图 detailView : false,//是否显示父子表 columns : [ { field : 'id', title : '编号' }, { field : 'name', title : '名字' }, { field : 'price', title : '价格' }, { field : 'operate', title : '操作', formatter : operateFormatter //自定义方法,添加操作按钮 }, ], rowStyle : function(row, index) { var classesArr = [ 'white', 'lightblue' ]; var strclass = ""; if (index % 2 === 0) {//偶数行 strclass = classesArr[0]; } else {//奇数行 strclass = classesArr[1]; } return { classes : strclass }; },//隔行变色 }); }; //得到查询的参数 oTableInit.queryParams = function(params) { var temp = {//这里的键的名字和控制器的变量名必须一直,这边改动,控制器也需要改成一样的 limit : params.limit,//页面大小 //pageNumber: params.pageNumber,//页码 offset : params.offset }; return temp; }; return oTableInit; }; function operateFormatter(value, row, index) {//赋予的参数 return [ '<a href="#" style="color:blue;" οnclick="edit(' + row.id + ')">编辑</a>|', '<a href="#" style="color:red;" οnclick="del(' + row.id + ')">删除</a>', ].join(''); } ``` table-edit.js ``` (function($){ 'use strict'; $.extend($.fn.bootstrapTable.defaults, { editable: false }); var BootstrapTable = $.fn.bootstrapTable.Constructor, _init = BootstrapTable.prototype.init, _initBody = BootstrapTable.prototype.initBody, _onSort = BootstrapTable.prototype.onSort, _append = BootstrapTable.prototype.append, _initHeader = BootstrapTable.prototype.initHeader ; //添加编辑表格默认属性,如何edit设置为false时,表示该列不可编辑 $.extend(true,BootstrapTable.COLUMN_DEFAULTS,{ edit:{ type:'text'//目前只支持 文本:text 下拉:select 日期:date } }); BootstrapTable.prototype.init = function () { _init.apply(this, Array.prototype.slice.apply(arguments)); var that = this; that.prevEditRow = null;//上一次编辑的行 that.columns = {};//列配置信息 that.insertRowVal = {};//新插入行的默认值 that.enableAppend = true;//允许添加新行 if (that.options.editable) { var columnObj = this['getColumns'](); $.each(columnObj,function(i,obj){ $.each(obj,function(z,col){ if(!isNaN(col.fieldIndex) && col.fieldIndex >= 0){ if(col.checkbox)col.edit = false; that.columns['column'+col.fieldIndex] = col; that.insertRowVal[col.field] = ''; } }); }); //this.initEdit(); } }; /*BootstrapTable.prototype.initHeader = function(){ _initHeader.apply(this, Array.prototype.slice.apply(arguments)); this.$container.find('.fixed-table-header').addClass('success'); };*/ BootstrapTable.prototype.initBody = function () { var that = this; _initBody.apply(this, Array.prototype.slice.apply(arguments)); if (!that.options.editable) return; this.initEdit(); //如果列是下拉框,则转换值为对应的文本 $.each(that.columns,function(indx,col){ if(col.edit && col.edit.type == 'select'){ col.edit = $.extend({},$.fn.bootstrapSelect.defaults,col.edit); if(col.edit.data.length > 0){ that.$body.find('>tr').each(function(){ if(that.getData().length < 1)return true; var rowData = that.data[$(this).data('index')];//当前点击td所在行的数据 var $td = $(this).find('td').eq(col.fieldIndex); $.each(col.edit.data,function(i,data){ if(data[col.edit.valueField] == rowData[col.field]){ $td.html(data[col.edit.textField]); } }); }); } else if(col.edit.url){ $.ajax({ url:col.edit.url, type:'post', data:col.edit.paramsType == 'json' ? JSON.stringify(col.edit.params) : col.edit.params, dataType:'json', success: function(jsonLst) { col.edit.onLoadSuccess.call(this,jsonLst); that.$body.find('>tr').each(function(){ if(that.getData().length < 1)return true; var rowData = that.data[$(this).data('index')];//当前点击td所在行的数据 var $td = $(this).find('td').eq(col.fieldIndex); $.each(jsonLst,function(i,data){ if(data[col.edit.valueField] == rowData[col.field]){ $td.html(data[col.edit.textField]); } }); }); col.edit.data = jsonLst; col.edit.url = null; }, error: function(xhr, textStatus, errorThrown){ col.edit.onLoadError.call(this); col.edit.data = []; col.edit.url = null; throw col.field+' 列下拉框数据加载失败'; } }); } } }); }; //根据行号删除指定行 BootstrapTable.prototype.removeRow = function (rowNum) { var that = this; var len = that.options.data.length; if (isNaN(rowNum)){ return; } if(that.$body.find('.editable-select').data('index') != rowNum){ recover(that); } //删除数据 that.options.data.splice(rowNum,1); if (len === that.options.data.length){ return; } var oldClass = {};//保存被标记修改的样式 that.$body.find('>tr').each(function(indx){ if($(this).hasClass('editable-modify')){ if(indx > rowNum){ oldClass[indx-1] = 'editable-modify'; } else{ oldClass[indx] = 'editable-modify'; } } }); //this.prevEditRow = null; //this.$body.find('>tr').removeClass('editable-select'); that.initBody(); //将标记改变过行的样式从新设置回去 for(var key in oldClass){ that.$body.find('>tr').eq(key).addClass(oldClass[key]); } //this.initEdit(); //没有数据时给提示加上样式 if(that.getData().length < 1){ that.$body.find('>tr').addClass('no-records-found'); } }; BootstrapTable.prototype.append = function (){ var that = this; //if(!that.enableAppend)return; var oldClass = {};//保存被标记修改的样式 that.$body.find('>tr').each(function(indx){ if($(this).hasClass('editable-modify') || $(this).hasClass('editable-insert')){ oldClass[indx] = 'editable-modify'; } }); arguments[0] = $.extend({},that.insertRowVal,arguments[0]); _append.apply(this,Array.prototype.slice.apply(arguments)); if (that.options.editable){ //that.initEdit(); setTimeout(function (){ //将标记改变过行的样式从新设置回去 for(var key in oldClass){ that.$body.find('>tr').eq(key).addClass(oldClass[key]); } that.$body.find('>tr:last').addClass('editable-modify'); that.$body.find('>tr:last').addClass('editable-insert');//双重保险,防止在快速点击添加时,为给新增行设置editable-modify属性 that.$body.find('>tr:last').click(); },60); } }; BootstrapTable.prototype.onSort = function () { _onSort.apply(this, Array.prototype.slice.apply(arguments)); var that = this; if (that.options.editable) { this.initEdit(); } }; BootstrapTable.prototype.getData = function () { return (this.searchText || this.searchCallback) ? this.data : this.options.data; }; BootstrapTable.prototype.getColumns = function () { return this.options.columns; }; /** * 获取有被修改过行的值 */ BootstrapTable.prototype.getModiDatas = function (){ var that = this; var datas = []; that.$body.find('.editable-modify').each(function(){ if(that.data[$(this).data('index')]){ datas.push(that.data[$(this).data('index')]); } }); return datas; }; /** * 获取指定列的和,参数为列下标 */ BootstrapTable.prototype.getColTotal = function (num){ var retVal = 0; this.$body.find('>tr').each(function(){ var colNum = 0; if($(this).hasClass('editable-select')){ colNum = $(this).find('td').eq(num).find('input').val(); } else{ colNum = $(this).find('td').eq(num).html(); } if(!isNaN(colNum)){//是数字才做想加 retVal += Number(colNum); } }); return retVal; }; /** * 创建可编辑表格 */ BootstrapTable.prototype.initEdit = function(){ var that = this, data = this.getData(); //this.$body.find('> tr').unbind('click').on('click' //this.$body.delegate('>tr','click' this.$body.find('> tr').unbind('click').on('click',function(){ var $tr = $(this); if($tr.hasClass('editable-select') || data.length < 1 || $tr.hasClass('no-records-found')){ return; } $tr.removeClass('no-records-found'); recover(that); that.prevEditRow = $tr; $tr.addClass('editable-select');//给当前编辑行添加样式,目前样式为空只做标识使用 that.$body.find('> tr').not(this).removeClass('editable-select'); $tr.find('td').closest('td').siblings().html(function(i,html){ initTrClick(that,this); }); }); //鼠标点击事件 $(document).bind('mousedown',function(event){ var $target = $(event.target); if(!($target.parents().andSelf().is(that.$body)) && !($target.parents().andSelf().is($('.datetimepicker')))){ setTimeout(function () { recover(that); //that.prevEditRow = null; //that.$body.find('> tr').removeClass('editable-select'); },10); }; }); }; $.fn.bootstrapTable.methods.push('getColumns', 'getModiDatas','removeRow','getColTotal'); /** * 给tr添加点击事件 */ function initTrClick(that,_this){ that.enableAppend = true; var $td = $(_this); var $tr = $td.parent(); var rowData = that.data[$tr.data('index')];//当前点击td所在行的数据 var tdIndex = $tr.children().index($td);//当前点击的td下标 var tdOpt = that.columns['column'+tdIndex]; if(!tdOpt.edit || typeof tdOpt.edit != 'object'){ return ; } $td.data('field',tdOpt.field); if(!$td.data('oldVal')){ $td.data('oldVal',$.trim(rowData[tdOpt.field])); } var height = $td.innerHeight() - 3; var width = $td.innerWidth() - 2; $td.data('style',$td.attr('style'));//保存原来的样式 $td.attr('style','margin:0px;padding:1px!important;'); var placeholder = ''; if(tdOpt.edit.required == true){ placeholder = '必填项'; } var value = rowData[tdOpt.field] == null || rowData[tdOpt.field] == ''?'':rowData[tdOpt.field]; $td.html('<div style="margin:0;padding:0;overflow:hidden;border:solid 0px red;height:'+(height)+'px;width:'+(width)+'px;">' +'<input type="text" placeholder="'+placeholder+'" value="'+value+'" style="margin-left: 0px; margin-right: 0px; padding-top: 1px; padding-bottom: 1px; width:100%;height:100%">' +'</div>'); $td.width(width); var $input = $td.find('input'); if(!tdOpt.edit.type || tdOpt.edit.type == 'text'){ if(tdOpt.edit['click'] && typeof tdOpt.edit['click'] === 'function'){ $input.unbind('click').bind('click',function(event){ tdOpt.edit['click'].call(this,event); }); } if(tdOpt.edit['focus'] && typeof tdOpt.edit['focus'] === 'function'){ $input.unbind('focus').bind('focus',function(event){ tdOpt.edit['focus'].call(this,event); }); } $input.unbind('blur').on('blur',function(event){ if(tdOpt.edit['blur'] && typeof tdOpt.edit['blur'] === 'function'){ tdOpt.edit['blur'].call(this,event); } }); } else if(tdOpt.edit.type == 'select'){ $input.bootstrapSelect(tdOpt.edit); } else if(tdOpt.edit.type == 'date'){ $td.html('<div style="margin:0;padding:0;overflow:hidden;border:solid 0px red;height:'+(height)+'px;width:'+(width)+'px;" class="input-group date form_datetime" data-link-field="dtp_editable_input">' +'<input class="form-control" type="text" value="'+value+'">' +'<span class="input-group-addon"><span class="glyphicon glyphicon-th"></span></span>' +'</div>' +'<input type="hidden" id="dtp_editable_input" value="'+value+'"/>' ); that.$body.find('.form_datetime').datetimepicker({ weekStart: 1, todayBtn: 1, autoclose: 1, todayHighlight: 1, startView: 2, forceParse: 0, language:'zh-CN', format: 'yyyy-mm-dd hh:ii:ss', pickerPosition: 'bottom-left', showMeridian: 1 }); } } /** * 恢复tr,使之处于不可编辑状态 */ function recover(that){ var isModi = false;//判断行值是否变动过 if(that.prevEditRow != null){ that.prevEditRow.find('td').closest('td').siblings().html(function(i,html){ $(this).attr('style',$(this).data('style')); var textVal = $(this).find('input[type="text"]').val(); var hiddenVal = $(this).find('input[type="hidden"]').val(); if(typeof $(this).find('input[type="text"]').bootstrapSelect('getText') != 'object'){ $(this).find('input[type="text"]').bootstrapSelect('destroy'); } if(textVal != undefined){ if($(this).data('oldVal') != (hiddenVal?hiddenVal:$.trim(textVal)) && $(this).data('field')) { that.data[that.prevEditRow.data('index')][$(this).data('field')] = hiddenVal?hiddenVal:$.trim(textVal); isModi = true; } if(that.columns['column'+i].edit.required == true){ if(textVal == null || textVal == ''){ that.enableAppend = false; return '<span style="color:red;">必填项不能为空</span>'; } } return $.trim(textVal); } }); //新值跟旧值不匹配证明被改过 if(isModi || that.prevEditRow.hasClass('editable-insert')){ that.prevEditRow.addClass('editable-modify'); } else{ that.prevEditRow.removeClass('editable-modify'); } that.prevEditRow = null; that.$body.find('> tr').removeClass('editable-select'); } } })(jQuery); ``` 哪位大神能帮忙解决下

大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了

大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

点沙成金:英特尔芯片制造全过程揭密

“亚马逊丛林里的蝴蝶扇动几下翅膀就可能引起两周后美国德州的一次飓风……” 这句人人皆知的话最初用来描述非线性系统中微小参数的变化所引起的系统极大变化。 而在更长的时间尺度内,我们所生活的这个世界就是这样一个异常复杂的非线性系统…… 水泥、穹顶、透视——关于时间与技艺的蝴蝶效应 公元前3000年,古埃及人将尼罗河中挖出的泥浆与纳特龙盐湖中的矿物盐混合,再掺入煅烧石灰石制成的石灰,由此得来了人...

讲一个程序员如何副业月赚三万的真实故事

loonggg读完需要3分钟速读仅需 1 分钟大家好,我是你们的校长。我之前讲过,这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

我说我不会算法,阿里把我挂了。

不说了,字节跳动也反手把我挂了。

优雅的替换if-else语句

场景 日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 采用策略模式+工厂模式; 结合注解,锦...

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

为什么你不想学习?只想玩?人是如何一步一步废掉的

不知道是不是只有我这样子,还是你们也有过类似的经历。 上学的时候总有很多光辉历史,学年名列前茅,或者单科目大佬,但是虽然慢慢地长大了,你开始懈怠了,开始废掉了。。。 什么?你说不知道具体的情况是怎么样的? 我来告诉你: 你常常潜意识里或者心理觉得,自己真正的生活或者奋斗还没有开始。总是幻想着自己还拥有大把时间,还有无限的可能,自己还能逆风翻盘,只不是自己还没开始罢了,自己以后肯定会变得特别厉害...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

你打算用Java 8一辈子都不打算升级到Java 14,真香

我们程序员应该抱着尝鲜、猎奇的心态,否则就容易固步自封,技术停滞不前。

无代码时代来临,程序员如何保住饭碗?

编程语言层出不穷,从最初的机器语言到如今2500种以上的高级语言,程序员们大呼“学到头秃”。程序员一边面临编程语言不断推陈出新,一边面临由于许多代码已存在,程序员编写新应用程序时存在重复“搬砖”的现象。 无代码/低代码编程应运而生。无代码/低代码是一种创建应用的方法,它可以让开发者使用最少的编码知识来快速开发应用程序。开发者通过图形界面中,可视化建模来组装和配置应用程序。这样一来,开发者直...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

《经典算法案例》01-08:如何使用质数设计扫雷(Minesweeper)游戏

我们都玩过Windows操作系统中的经典游戏扫雷(Minesweeper),如果把质数当作一颗雷,那么,表格中红色的数字哪些是雷(质数)?您能找出多少个呢?文中用列表的方式罗列了10000以内的自然数、质数(素数),6的倍数等,方便大家观察质数的分布规律及特性,以便对算法求解有指导意义。另外,判断质数是初学算法,理解算法重要性的一个非常好的案例。

《Oracle Java SE编程自学与面试指南》最佳学习路线图(2020最新版)

正确选择比瞎努力更重要!

一文带你入门Java Stream流,太强了

两个星期以前,就有读者强烈要求我写一篇 Java Stream 流的文章,我说市面上不是已经有很多了吗,结果你猜他怎么说:“就想看你写的啊!”你看你看,多么苍白的喜欢啊。那就“勉为其难”写一篇吧,嘻嘻。 单从“Stream”这个单词上来看,它似乎和 java.io 包下的 InputStream 和 OutputStream 有些关系。实际上呢,没毛关系。Java 8 新增的 Stream 是为...

都前后端分离了,咱就别做页面跳转了!统统 JSON 交互

文章目录1. 无状态登录1.1 什么是有状态1.2 什么是无状态1.3 如何实现无状态1.4 各自优缺点2. 登录交互2.1 前后端分离的数据交互2.2 登录成功2.3 登录失败3. 未认证处理方案4. 注销登录 这是本系列的第四篇,有小伙伴找不到之前文章,松哥给大家列一个索引出来: 挖一个大坑,Spring Security 开搞! 松哥手把手带你入门 Spring Security,别再问密...

面试官:你连SSO都不懂,就别来面试了

大厂竟然要考我SSO,卧槽。

立即提问
相关内容推荐