【问题标题】:jquery element duplication in list box列表框中的jquery元素重复
【发布时间】:2012-02-16 18:26:23
【问题描述】:

我有 5 个同名的列表框。如果我在列表框中选择相同的元素,它会返回错误消息,因为该值已被选中。如何在 javascript 或 jquery 中实现这一点

                <table width="50%" border="0">
            <tr>
            <td><select id="prev" name="prev[0][]" >
            <option value="test">test</option>
            <option value="test1">test</option>
            <option value="test2">test</option>
            <option value="test3">test</option>
            <option value="test4">test</option>

            </select>
            </td>
            </tr>
            <tr>
            <td><select id="prev" name="prev[0][]" >
            <option value="test">test</option>
            <option value="test1">test</option>
            <option value="test2">test</option>
            <option value="test3">test</option>
            <option value="test4">test</option>

            </select>
            </td>
            </tr>
            <tr>
            <td><select id="prev" name="prev[0][]" >
            <option value="test">test</option>
            <option value="test1">test</option>
            <option value="test2">test</option>
            <option value="test3">test</option>
            <option value="test4">test</option>

            </select>
            </td>
            </tr>
            <tr>
            <td><select id="prev" name="prev[0][]" >
            <option value="test">test</option>
            <option value="test1">test</option>
            <option value="test2">test</option>
            <option value="test3">test</option>
            <option value="test4">test</option>

            </select>
            </td>
            </tr>
            <tr>
            <td><select id="prev" name="prev[0][]" >
            <option value="test">test</option>
            <option value="test1">test</option>
            <option value="test2">test</option>
            <option value="test3">test</option>
            <option value="test4">test</option>

            </select>
            </td>
            </tr>
            </table>

我用来检查列表框是否被选中的查询函数是:

$("select[name^='prev["+k+"']").each(function( i ) {
        lsval = this.value;

        if(lsval == '') {
                alert("enter value");
                $("select[name^='prev["+k+"']").eq(i).focus();
                return false;
        }

    });

我有 (test,test1,test2,test3,test4) 选项 如果我在超过 1 个列表框中选择相同的值,则它会返回警报消息('此值已选择')。

如何实现这一点。请只做那些需要的。谢谢

【问题讨论】:

  • 您能否发布提醒This value already selected 消息的javascript 代码。我们无法为您提供帮助。
  • 顺便说一句:你不能拥有具有相同 id 的对象。
  • 同意 Blauesocke .. 你必须使用类而不是 id,你也可以发布 javascript 吗?
  • 我编辑了这个问题。我包含了用于检查列表框是否为空的 jquery 函数。够了吗?请告诉我。谢谢

标签: php jquery


【解决方案1】:

希望这可以帮助您,但我个人认为每次选择时都保持警惕非常烦人 HTML部分

             <table width="50%" border="0">
        <tr>
        <td><select class="prev" name="prev[0][]" >
        <option value="test">test</option>
        <option value="test1">test 1</option>
        <option value="test2">test 2</option>
        <option value="test3">test 3</option>
        <option value="test4">test 4</option>

        </select>
        </td>
        </tr>
        <tr>
        <td><select class="prev" name="prev[0][]" >
        <option value="test">test</option>
        <option value="test1">test 1</option>
        <option value="test2">test 2</option>
        <option value="test3">test 3</option>
        <option value="test4">test 4</option>

        </select>
        </td>
        </tr>
        <tr>
        <td><select class="prev" name="prev[0][]" >
        <option value="test">test</option>
        <option value="test1">test 1</option>
        <option value="test2">test 2</option>
        <option value="test3">test 3</option>
        <option value="test4">test 4</option>

        </select>
        </td>
        </tr>
        <tr>
        <td><select class="prev" name="prev[0][]" >
        <option value="test">test</option>
        <option value="test1">test 1</option>
        <option value="test2">test 2</option>
        <option value="test3">test 3</option>
        <option value="test4">test 4</option>

        </select>
        </td>
        </tr>
        <tr>
        <td><select class="prev" name="prev[0][]" >
        <option value="test">test</option>
        <option value="test1">test 1</option>
        <option value="test2">test 2</option>
        <option value="test3">test 3</option>
        <option value="test4">test 4</option>

        </select>
        </td>
        </tr>
        </table>

查询部分

        $(function(){
        var PrevArray = [];
        $('.prev').live("click",function(){
            var selected = $(this).val();

            if($.inArray(selected,PrevArray) !== -1)
            {
                alert('Already Selected');
            }
            else
            {
                PrevArray.push(selected);
                console.log(PrevArray);
            }
        });
    });

【讨论】:

  • 命令console.log(PrevArray);在ie7中不起作用。有什么理由吗?它在 FF、chrome 中运行良好。请只做那些需要的。谢谢
【解决方案2】:

名称和 ID 不应多次用于 HTML 元素。

我不确定您如何存储表单收集的数据,但您可以将代码更改为:

<select id="prev-1" name="prev-1" ></select>
<select id="prev-2" name="prev-2" ></select>
<select id="prev-3" name="prev-3" ></select>

【讨论】:

  • id 和 name 不必相同,据我所知。
  • @Svish,确实没有。只是一个例子。
【解决方案3】:

你也应该使用select class=""而不是id标签,因为id标签只供1次使用,而class标签是多次使用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-14
    • 2013-01-30
    • 2011-03-04
    • 2013-12-15
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    相关资源
    最近更新 更多