检查重复值

时间:2016-04-19 10:06:50

标签: javascript jquery

我有一个手风琴文字域。所以你可以添加人。对于每个人,您都有一个textfield,您可以在其中填写电子邮件地址。但是,不允许不允许不同的人使用重复的电子邮件地址。

例如:

A人有电子邮件:hallo@gmail.com

B人有电子邮件:hallo@gmail.com不允许!!

我将此作为javascript:

 $('#accordion .user-row').each(function (uindex, uvalue) {
                            html += '<tr>';

                            $(this).find('input').each(function (index, value) {

                                // Check if input type is a checkbox
                                if ($(this).is(":checkbox")) {
                                    var JaNee = 'Nee';
                                    if ($(this).is(":checked")) JaNee = 'Ja';
                                    html = html + '<td>' + JaNee + '</td>';
                                }
                                else {
                                    // Add the value into the html
                                    html = html + '<td>' + $(this).val() + '</td>';
                                }
                            });

                            html += '</tr>';
                        });

这是html:

<div class="contact-label span2">
          <label for="contactpersonen-email">Email adres</label>
          <div class="contact-input-field">
            <input type="text" class="input-text span2" id="contactpersonen-email" name="contactpersonen-email"></input>
          </div>
        </div>

这是用于生成html字段:

$('#add-contact p a').click(function()
                                {
                                    // Make a copy of the first input fields
                                    html = $('#new-contact').children().clone();

                        // Get number of tabs in the accordion
                        var index = $('#accordion h3').length;

                                    // Remove the values
                                    html.find("input[type=text]").val("");
                  html.find('input[type=checkbox]').attr('checked', false);

                        // New 'id', 'for' and 'name' attribute names
                        html.find('input[type=checkbox]').each(function () {
                            me = $(this);
                            attr = me.attr('id');
                            number = attr.split('_')[2];
                            newNumber = parseInt(index) + 1;
                            newAttr = attr.replace(number, newNumber);
                            me.attr('id', newAttr).attr('name', newAttr).next().attr('for', newAttr);
                        });                  

                                    // Insert it at the end
                        $('#accordion').append(html);
                        $('#accordion').accordion('refresh');

                        // Set last tab to active
                        $("#accordion").accordion({ active: index });

                                    // Cancel the click
                                    return false;
                                });

我现在就这样:

$('#add-contact p a').click(function()
                                {
                                     html = $('#new-contact').children().clone();                   
                                    // Make a copy of the first input fields
                                    var cnt = 0;
html.find('input[type=text]').each(function () {
         me = $(this);
         me.attr('id', 'contactpersonen-email-'+cnt);
         cnt++;


});

所以我得到了:

contactpersonen的电子邮件 contactpersonen-email-2这样很好:))

但如果我创建第三个文本框电子邮件。它是:

contactpersonen-email-2所以不是唯一的。

你有:

contactpersonen-voornaam contactpersonen-email..etc。

所以每个新人都必须: contactpersonen-voornaam1,contactpersonen-voornaam2..etc

contactpersonen-email1,contactpersonen-email2..etc。

所以我试试这样:

                            // Add extra contact clicked?
                                $('#add-contact p a').click(function()
                                {
var cnt = 0;
var cnt2 = 0;
var cnt3 = 0;
var cnt4 = 0;
var cnt5 = 0;
var cnt6 = 0;
          html = $('#new-contact').children().clone();                  
                                    // Make a copy of the first input fields

html.find('input[type=text]').each(function () {
         me = $(this);
         me.attr('id', 'contactpersonen-email-'+cnt);
         cnt++;


});

html.find('input[type=text]').each(function () {
         me = $(this);
         me.attr('id', 'contactpersonen-voornaam-'+cnt2);
         cnt2++;


});

html.find('input[type=text]').each(function () {
         me = $(this);
         me.attr('id', 'contactpersonen-achternaam-'+cnt3);
         cnt3++;


});

html.find('input[type=text]').each(function () {
         me = $(this);
         me.attr('id', 'contactpersonen-telefoon-'+cnt4);
         cnt4++;


});

html.find('input[type=text]').each(function () {
         me = $(this);
         me.attr('id', 'contactpersonen-functie-'+cnt5);
         cnt5++;


});

html.find('input[type=text]').each(function () {
         me = $(this);
         me.attr('id', 'contactpersonen-monteur-'+cnt6);
         cnt6++;


});






                        // Get number of tabs in the accordion
                        var index = $('#accordion h3').length;

                                    // Remove the values
                                    html.find("input[type=text]").val("");
                  html.find('input[type=checkbox]').attr('checked', false);

                        // New 'id', 'for' and 'name' attribute names
                        html.find('input[type=checkbox]').each(function () {
                            me = $(this);
                            attr = me.attr('id');
                            number = attr.split('_')[2];
                            newNumber = parseInt(index) + 1;
                            newAttr = attr.replace(number, newNumber);
                            me.attr('id', newAttr).attr('name', newAttr).next().attr('for', newAttr);
                        });                  

                                    // Insert it at the end
                        $('#accordion').append(html);
                        $('#accordion').accordion('refresh');

                        // Set last tab to active
                        $("#accordion").accordion({ active: index });

                                    // Cancel the click
                                    return false;
                                });
哦,我改变了这个:

html.find('input[type=text]').each(function () {
         me = $('#contactpersonen-email');
         me.attr('id', 'contactpersonen-email-'+cnt);
         cnt++;    
});

但现在的问题是,由第三个添加的人,它仍然给出: contactpersonen-电子邮件-1

而不是,但现在的问题是,由第三个添加的人,它仍然给出: contactpersonen-电子邮件2..etc

1 个答案:

答案 0 :(得分:1)

你可以这样做:

$(function(){

$('input[name^="text"]').change(function() {

    var $current = $(this);

    $('input[name^="text"]').each(function() {
        if ($(this).val() == $current.val() && $(this).attr('id') != $current.attr('id'))
        {
            alert('duplicate email address. please enter another email address.');
            $current.val("");
        }

    });
  });
});


// for generating unique id example
var cnt = 0;
html.find('input[type=text]').each(function () {
         me = $(this);
         me.attr('id', 'contactpersonen-email-'+cnt);
         cnt++;
});