我有一个手风琴文字域。所以你可以添加人。对于每个人,您都有一个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
答案 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++;
});