• 前端select中option的取值和赋值和我个人的一些骚操作


    嘿呀,又来了,这是很简单的一次。希望多年后看到这个记录不会脸发烫

    最近前端各种各样写。不过有一个需求是这样的

    需求是在下拉框中 增加用户自定义的内容,嗯,没什么难度。

    然后根据用户选择的自定义内容,填上 上下班时间。emmm~好像也可以。让我思索下....

    首先数据格式是这样的。用“;”分隔,用“,”间隔。

    早班,08:0018:00;晚班,10:0022:00

    这个不难,拆分就可以了。现在第一个问题,拆分后我可以把早晚班给输入进去到select中的option里。

    但是第二个需求根据选择班次来进行2个input中的时间自动填入。

    首先,在正常情况下大多数时候我都会选择使用隐藏文本域来达到目的,根据获取到的select,option值来取对应文本域中的值在赋值出去。

    但是在select下只能写option,这条路给我绝了。

     好吧,既然最擅长的给我封杀了,那就想另一条路。

    根据select中change后获取到的选项,我在外面再ajax加载获取一次数据怎么样,然后填充。

    啊,这个想法好可怕(好麻烦),每次切换都要加载拉一遍,估计会被锤死。

    那既然这样,我就把目光放在了select的option中。

    这一次我把隐藏文本域的目标放在了option上,然后细细的琢磨。

    嘿,有了。 上代码。

     1 <select jq-select id="ModifierLoginNo" name="ModifierLoginNo" class="form-control">
     2                         <option value="">==选择班次==</option>
     3                         @for (int i = 0; i < loopArr.Count; i++)
     4                         {
     5                             if (loopArr[i] != "")
     6                             {
     7                                 <option value="@i">@loopArr[i] </option>
     8                                 <option value="@(i+1)" style="display:none" >@loopArr[i + 1]</option>
     9                                 <option value="@(i+2)" style="display:none" >@loopArr[i + 2]</option>
    10                                 i += 2;
    11                             }
    12                         }

    敲黑板,为我自己的聪明点赞。

    然后问题就来了,我怎么取出来option的值,

    我。忘。了。!!

    说干就干(查百度)

     直接上获取 option值的代码

     1  <script type="text/javascript">
     2                         $(function () {
     3                             $("[jq-select]").bind("change", function () {
     4                                 var currentSelect = this.value;
     5                                 var startWork = $("[jq-select] option[value=" + (+currentSelect + 1) + "]").text();
     6                                 var endWork = $("[jq-select] option[value=" + (+currentSelect + 2) + "]").text();
     7                                 $('[jq-startWork]').val(startWork);
     8                                 $('[jq-endWork]').val(endWork);
     9                                 if (currentSelect == "") {
    10                                     $('[jq-startWork]').val("");
    11                                     $('[jq-endWork]').val("");
    12                                 }
    13                             })
    14                         });
    15                     </script>

    获取方式为5-6行的代码。

    这里使用的是jquery的复合选择器。在这里不得不在赞扬下,这么写实在太方便了。

    好的,现在获取值拿到了,放入到指定框内不就很随意了嘛。。。。

    自此,我们完成了option异位取值的过程。

    那么有的小伙伴就说了,我不要这种方式取值,我就想要我选中的那个值。怎么办?

    放心,我们程序员都是有头有尾的。

    比如现在,我既然选择了这个选项,我就必须要给他存到db里面去。那么获取这个选中的内容应该怎么去写呢?

    直接上代码

    var sampleGetSelected = $("[jq-select] option:selected").text();

    简简单单这样就可以拉

    如果你不是获取当中的文本,只是获取value 的话,这样子

    var sampleGetSelected = $("[jq-select] option:selected").val();

    养成良好的习惯,“;”不要忘记。

    --------------------------------------------------------------------------------------------------------------------------------------------------

    然后。。。。。你以为这就完了?

    做事要做全套,小伙砸。

     在进入这个页面的时候,如果之前有已选择过的班次,那么就要默认选中。下面时间也要对应好。

    这个是需求里面没有写的东西,但是你要明白,这个也是你的活儿~

    不过。。。

    这个简直就是太简单了嘛。

    拿到数据库的存储值,和循环中的比对,然后、、、巴拉巴拉巴拉

    1                     $('[jq-select]').find("option").each(function () {
    2                         var $this = $(this);
    3                         if ($this.text().trim() == data.ModifierLoginNo) {
    4                             $this.attr("selected", true);
    5                             return false;
    6                         }
    7                     });

    其实自己写当中还有一些坑,这里就懒得说了,直接上代码悟去把。

    核心其实在第四行,如果是选中的,直接给attr里面加上“selected”就可以,不要忘记加true哦

    顺带提一嘴,在each中直接使用break 和return是不管用的,需要加 false;

    return false;——跳出所有循环;相当于 javascript 中的 break 效果。
    return true;——跳出当前循环,进入下一个循环;相当于 javascript 中的 continue 效果

    最后,在后台里面改加验证的加验证,该加非空加非空。。。。。。。省略一万字

    毕竟,后端永远不要相信前端嘛。

    怕打,溜。。。。。

  • 相关阅读:
    硬件重定向
    ARM处理器模式切换(含MRS,MSR指令)
    ARM处理器工作模式
    ARM处理器异常处理
    JS和H5做一个音乐播放器,附带源码
    php页面zend加密乱码的解决办法
    ZendOptimizer怎么安装?Php网站打开显示乱码
    PHP和Python如何选择?或许可以考虑这三个问题
    SQL Server 2008读书笔记(3):表
    Dijkstra算法
  • 原文地址:https://www.cnblogs.com/SevenWang/p/13924894.html
Copyright © 2020-2023  润新知