Премахване на дублирани стойности

C++ JAVA
Post Reply
Knoppix_
Турист
Турист
Posts: 322
Joined: Mon Aug 24, 2009 11:55 am

Премахване на дублирани стойности

Post by Knoppix_ » Wed Feb 10, 2016 8:27 am

Здравейте имам два <select>-а който имат данни който се дублират

например
<select id="first" name=first[]>
<select option = "1">1</option>
<select option = "2">2</option>
<select option = "3">3</option>
<select option = "4">4</option>
<select option = "5">5</option>
</select>
<select id="first" name=first[]>
<select option = "1">1</option>
<select option = "2">2</option>
<select option = "3">3</option>
<select option = "4">4</option>
<select option = "5">5</option>
</select>

мога ли с джава скрипт и как ако някой може да даде tutorial
да премахна стойноста която е избрана в първият

User avatar
mitkosoft
Нов
Нов
Posts: 21
Joined: Mon Feb 08, 2016 2:27 pm

Post by mitkosoft » Wed Feb 10, 2016 9:26 am

Най-лесно с jQuery:

Code: Select all

        <script>
            $&#40;document&#41;.ready&#40;function &#40;&#41; &#123;
                var allSelects = $&#40;document.body&#41;.find&#40;'select'&#41;;
                $&#40;allSelects&#91;0&#93;&#41;.val&#40;''&#41;;
            &#125;&#41;;
        </script>
Това изнамира всички селекти в документа и на първия слага стойност "нищо" или която си пожелаеш от валидните в самия селект.

Само да вметна, че селектите не са конструирани правилно, няма такъв HTML елемент:

Code: Select all

<select option = "1">1</option>
трябва да е:

Code: Select all

<option value="1">1</option>

Knoppix_
Турист
Турист
Posts: 322
Joined: Mon Aug 24, 2009 11:55 am

Post by Knoppix_ » Wed Feb 10, 2016 1:20 pm

Беше просто набързо написано иначе да за html кода знам, но по принцип ме интересува следното след като селектирам стойност 1 във вторият да не се появява например при него селектирам 1 а във вторият да почват от стойност 2,3 и тн

User avatar
anonimen
Web-tourist
Web-tourist
Posts: 1580
Joined: Mon Jun 11, 2012 6:07 pm
Answers: 163
Location: Parse error: unexpected "}" in /home/index.php on line 26

Post by anonimen » Wed Feb 10, 2016 1:33 pm

В случая не се ползват два еднакви селекта, а един, с атрибут mutiple.
Няма нужда от jQuery тогава, когато е вградено в html :?:

[html]<select multiple>
<!-- ... --->[/html]

Демо: http://www.w3schools.com/tags/tryit.asp ... t_multiple

Knoppix_
Турист
Турист
Posts: 322
Joined: Mon Aug 24, 2009 11:55 am

Post by Knoppix_ » Wed Feb 10, 2016 1:44 pm

Това са падащи менюта изведени от ДБ т.е при редакция вадя два селекта или добавям ако искам да добавя още една стойност идеят ми е при извеждането на вторият селект да не мога да избера например Английски ако вече го има избран

User avatar
mitkosoft
Нов
Нов
Posts: 21
Joined: Mon Feb 08, 2016 2:27 pm

Post by mitkosoft » Wed Feb 10, 2016 2:10 pm

Knoppix_ wrote:Това са падащи менюта изведени от ДБ т.е при редакция вадя два селекта или добавям ако искам да добавя още една стойност идеят ми е при извеждането на вторият селект да не мога да избера например Английски ако вече го има избран

Code: Select all

        <select id="first" name=first&#91;&#93;>
            <option value="1">1</option>
            <option value="2">2</option>
            <option value="3">3</option>
            <option value="4">4</option>
            <option value="5">5</option>
        </select>
        <select id="second" name=second&#91;&#93;>
            <option value="1">1</option>
            <option value="2">2</option>
            <option value="3">3</option>
            <option value="4">4</option>
            <option value="5">5</option>
        </select>
        <script>
            $&#40;document&#41;.ready&#40;function &#40;&#41; &#123;
                var secondArray = &#91;&#93;;
                $&#40;'#second option'&#41;.each&#40;function &#40;&#41; &#123;
                    secondArray.push&#40;&#123;key&#58; $&#40;this&#41;.val&#40;&#41;, value&#58; $&#40;this&#41;.text&#40;&#41;&#125;&#41;;
                &#125;&#41;;
                $&#40;'#first'&#41;.change&#40;function &#40;&#41; &#123;
                    var dynamicVal = $&#40;this&#41;.val&#40;&#41;;
                    
                    $&#40;"#second"&#41;.find&#40;'option'&#41;.remove&#40;&#41;;
                    $.each&#40;secondArray, function &#40;i, v&#41; &#123;
                        if&#40;v.key != dynamicVal&#41;&#123;
                            $&#40;'#second'&#41;.append&#40;$&#40;'<option>', &#123;value&#58; v.key&#125;&#41;.text&#40;v.value&#41;&#41;;
                        &#125;
                    &#125;&#41;;
                &#125;&#41;;
            &#125;&#41;;
        </script>
Успех. ;)
Last edited by mitkosoft on Thu Feb 11, 2016 12:17 pm, edited 1 time in total.

User avatar
anonimen
Web-tourist
Web-tourist
Posts: 1580
Joined: Mon Jun 11, 2012 6:07 pm
Answers: 163
Location: Parse error: unexpected "}" in /home/index.php on line 26

Post by anonimen » Wed Feb 10, 2016 3:06 pm

@mitkosoft

[js] $("#second").find('option').remove();[/js]

<=>

[js] $("#second option").remove();[/js]

Или е по-ефективно първото? Макар че щом се ползва jquery едва ли скоростта е от значение...

User avatar
mitkosoft
Нов
Нов
Posts: 21
Joined: Mon Feb 08, 2016 2:27 pm

Post by mitkosoft » Wed Feb 10, 2016 3:37 pm

anonimen wrote:@mitkosoft

[js] $("#second").find('option').remove();[/js]

<=>

[js] $("#second option").remove();[/js]

Или е по-ефективно първото? Макар че щом се ползва jquery едва ли скоростта е от значение...
В общия случай - да, чрез селектор би трябвало да е теоретично по-бързо, избягва се викането на втора функция. Така или иначе аз предпочитам първия подход, тъй като синтаксиса е много по-четим. И двете опции са работещи, въпрос на предпочитания.

Post Reply