【问题标题】:Display option Text from <select> tag显示来自 <select> 标记的选项文本
【发布时间】:2017-08-09 15:37:03
【问题描述】:

我想获取或显示我的&lt;select&gt; 中选择的选项的文本,但问题是这些是动态生成的,所以我不知道如何使用选择器 (jquery) 来捕获这些值

这是我的 html,&lt;select&gt; 可以更改

<div>
<ul style="list-style-type: none;">
    <li>
        <input type="checkbox" name="filterCur" value="AutorCu"><label> Autor</label><br>
    </li>
    <li>
        <input type="checkbox" name="filterCur" value="EscuelaCu"><label> Escuela</label><br>
    </li>
    <li>
        <input type="checkbox" name="filterCur" value="CategoriasCu"><label> Categorias</label><br>
    </li>
</ul>


<div id="searchCu"><select id="AutorCu"><option>Seleccione una opción</option>
<option value="1">foo1</option>
<option value="2">foo2</option>
<option value="3">fooN</option>
</select>
<select id="EscuelaCu"><option>Seleccione una opción</option>
    <option value="1">Instituto de Artes</option>
    <option value="2">Instituto de Ciencias Basicas e Ingenieria</option>
    <option value="3">Instituto de Ciencias de la Salud</option>
</select>
<select id="CategoriasCu"><option>Seleccione una opción</option>
    <option value="1">Arte y arquitectura</option>
    <option value="2">Economia y empresa</option>
    <option value="3">Medios de comunicacion</option>
    <option value="4">Ingenieria</option>
</select></div>
<button id="BuscarCu" class="btn btn-default">Buscar</button>

还有 JS

<script>

$(document).ready(function () {

    //Cursos Procedures
    $("input[name=filterCur").click(function () {
        var checkboxes = $("input[name=filterCur]");
        var searchCu=$("#searchCu");
        $.each(checkboxes,function (index, chk) {
            if(chk.checked)
                switch(chk.value){
                    case "AutorCu":
                        //console.log("has seleccionado "+chk.value);
                        searchCu.find("#"+chk.value).remove();
                        searchCu.append($("<select>",{id:chk.value}));
                        listAutores("#"+chk.value);
                        break;
                    case "EscuelaCu":
                        //console.log("has seleccionado "+chk.value);
                        searchCu.find("#"+chk.value).remove();
                        searchCu.append($("<select>",{id:chk.value}));
                        listEscuelas("#"+chk.value);
                        break;
                    case "CategoriasCu":
                        //console.log("has seleccionado "+chk.value);
                        searchCu.find("#"+chk.value).remove();
                        searchCu.append($("<select>",{id:chk.value}));
                        listCategorias("#"+chk.value);
                        break;
                    default:
                        //console.log("el valor seleccionado esta mal, torpe");
                }
            else{
                switch(chk.value){
                    case "AutorCu":
                        //console.log("has seleccionado "+chk.value);
                        searchCu.find("#"+chk.value).remove();
                        break;
                    case "EscuelaCu":
                        //console.log("has seleccionado "+chk.value);
                        searchCu.find("#"+chk.value).remove();
                        break;
                    case "CategoriasCu":
                        //console.log("has seleccionado "+chk.value);
                        searchCu.find("#"+chk.value).remove();
                        break;
                    default:
                        //console.log("el valor seleccionado esta mal, torpe");
                }
            }

        })

    });

    $("button#BuscarCu").on("click",function () {
        var siblings = $("#searchCu > select");
        $.each(siblings,function (index, son) {
            //this consolelog, should display the option selected
            **console.log(son.text());**
            //This consolelog, displays the value of the option selected
            console.log(son.value);

        });
    });
});

在您提问或回答之前,listEscuelas(id)listAutores(id)listCategorias(id) 使用 ajax 为 php 调用一个外部 js,该 js 为 &lt;select&gt;&lt;/select&gt;id 返回 &lt;option&gt; 如果你有一个&lt;select id="foo"&gt; 然后你打电话给listEscuelas(id) 填充foo id 应该是 id="#foo" 并且结果将类似于这些或其他选项

<select><option value="1">Instituto de Artes</option>
<option value="2">Instituto de Ciencias Basicas e Ingenieria</option>
<option value="3">Instituto de Ciencias de la Salud</option>

【问题讨论】:

  • console.log(son.text()); 这是应该显示 &lt;option&gt; 文本的控制台日志
  • 下一次,请尝试构建一个较小的问题示例。你在这里提交的代码太多了。

标签: jquery html jquery-selectors html-select


【解决方案1】:

为什么你的不工作

你用过:

son.text()

虽然它可能违反直觉,但 jQuery 为您提供了一个 JavaScript DOM 对象,而不是一个 jQuery 对象。因此,您不能从 JavaScript 对象调用 jQuery 函数 .text()。要解决此问题,只需将其更改为 $(son).text()。但是,这将抓取选择中的所有文本,我们只想要所选选项的文本。因此,我决定使用.find() 和一个检查值是否为所选值的选择器来缩小搜索范围。

解决方案

所以,这是我的版本:

console.log($(son).find("[value='"+son.value+"']").text());

将其应用于您的代码

$(document).ready(function () {

    //Cursos Procedures
    $("input[name=filterCur").click(function () {
        var checkboxes = $("input[name=filterCur]");
        var searchCu=$("#searchCu");
        $.each(checkboxes,function (index, chk) {
            if(chk.checked)
                switch(chk.value){
                    case "AutorCu":
                        //console.log("has seleccionado "+chk.value);
                        searchCu.find("#"+chk.value).remove();
                        searchCu.append($("<select>",{id:chk.value}));
                        listAutores("#"+chk.value);
                        break;
                    case "EscuelaCu":
                        //console.log("has seleccionado "+chk.value);
                        searchCu.find("#"+chk.value).remove();
                        searchCu.append($("<select>",{id:chk.value}));
                        listEscuelas("#"+chk.value);
                        break;
                    case "CategoriasCu":
                        //console.log("has seleccionado "+chk.value);
                        searchCu.find("#"+chk.value).remove();
                        searchCu.append($("<select>",{id:chk.value}));
                        listCategorias("#"+chk.value);
                        break;
                    default:
                        //console.log("el valor seleccionado esta mal, torpe");
                }
            else{
                switch(chk.value){
                    case "AutorCu":
                        //console.log("has seleccionado "+chk.value);
                        searchCu.find("#"+chk.value).remove();
                        break;
                    case "EscuelaCu":
                        //console.log("has seleccionado "+chk.value);
                        searchCu.find("#"+chk.value).remove();
                        break;
                    case "CategoriasCu":
                        //console.log("has seleccionado "+chk.value);
                        searchCu.find("#"+chk.value).remove();
                        break;
                    default:
                        //console.log("el valor seleccionado esta mal, torpe");
                }
            }

        })

    });

    $("button#BuscarCu").on("click",function () {
        var siblings = $("#searchCu > select");
        $.each(siblings,function (index, son) {
            //this consolelog, should display the option selected
            console.log($(son).find("[value='"+son.value+"']").text());
            //This consolelog, displays the value of the option selected
            console.log(son.value);

        });
    });
});
<div>
<ul style="list-style-type: none;">
    <li>
        <input type="checkbox" name="filterCur" value="AutorCu"><label> Autor</label><br>
    </li>
    <li>
        <input type="checkbox" name="filterCur" value="EscuelaCu"><label> Escuela</label><br>
    </li>
    <li>
        <input type="checkbox" name="filterCur" value="CategoriasCu"><label> Categorias</label><br>
    </li>
</ul>


<div id="searchCu"><select id="AutorCu"><option value="-1">Seleccione una opción</option>
<option value="1">foo1</option>
<option value="2">foo2</option>
<option value="3">fooN</option>
</select>
<select id="EscuelaCu"><option value="-1">Seleccione una opción</option>
    <option value="1">Instituto de Artes</option>
    <option value="2">Instituto de Ciencias Basicas e Ingenieria</option>
    <option value="3">Instituto de Ciencias de la Salud</option>
</select>
<select id="CategoriasCu"><option value="-1">Seleccione una opción</option>
    <option value="1">Arte y arquitectura</option>
    <option value="2">Economia y empresa</option>
    <option value="3">Medios de comunicacion</option>
    <option value="4">Ingenieria</option>
</select></div>
<button id="BuscarCu" class="btn btn-default">Buscar</button>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-29
    • 2018-04-05
    • 1970-01-01
    • 2017-11-04
    • 2014-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多