列表框中的jquery元素重复

时间:2012-02-16 09:56:23

标签: php jquery

我有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) 如果我在多个列表框中选择相同的值,则它会将警报消息返回为('此值已被选中')。

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

3 个答案:

答案 0 :(得分:1)

希望这可以帮到你,但我个人认为每次选择的警报都很烦人 HTML PART

             <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>

JQUERY PART

        $(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);
            }
        });
    });

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

你也应该使用select class =&#34;&#34;而不是id标记,因为id标记仅用于1次使用,而class标记用于多次使用