如何防止javascript中的重复条目?
我在防止输入重复项方面遇到问题,我使用一个按钮在两个页面中同时动态生成单选按钮,我从用户处获取标签并从该标签生成单选按钮,我希望防止用户输入两个相同的标签,以下是为2页生成收音机的脚本。如有任何帮助,将不胜感激如何防止javascript中的重复条目?,javascript,jquery,Javascript,Jquery,我在防止输入重复项方面遇到问题,我使用一个按钮在两个页面中同时动态生成单选按钮,我从用户处获取标签并从该标签生成单选按钮,我希望防止用户输入两个相同的标签,以下是为2页生成收音机的脚本。如有任何帮助,将不胜感激 function createRadioElement(elem, label, checked) { var id = 'option1_' + label; $('#after').append($('<input />', { 'type': 'radio',
function createRadioElement(elem, label, checked) {
var id = 'option1_' + label;
$('#after').append($('<input />', {
'type': 'radio',
'fieldset':'group',
'name': 'option1',
'id': id,
'data-role': 'controlgroup',
'data-theme':'b',
'value': '1'}));
$('#after').append('<label for="' + id + '">'+ label + '</label>').trigger('create');}
function createRadioFortSecondPage(elem, label, checked) {
var id = 'option1_' + label;
$('#Inserthere').append($('<input />', {
'type': 'radio',
'fieldset':'group',
'name': 'option1',
'id': id,
'data-role': 'controlgroup',
'data-theme':'b',
'value': '1'}));
$('#Inserthere').append('<label for="' + id + '">'+ label + '</label>').trigger('create');}
函数createRadioElement(元素、标签、选中){
变量id='选项1'+标签;
$('#after')。追加($(''){
'type':'radio',
“字段集”:“组”,
“名称”:“选项1”,
“id”:id,
“数据角色”:“控制组”,
“数据主题”:“b”,
'值':'1'}));
$('#after')。追加(''+label+'')。触发器('create');}
函数createRadioFortSecondPage(元素、标签、选中){
变量id='选项1'+标签;
$('#Inserthere')。追加($(''){
'type':'radio',
“字段集”:“组”,
“名称”:“选项1”,
“id”:id,
“数据角色”:“控制组”,
“数据主题”:“b”,
'值':'1'}));
$(“#Inserthere”).append(“”+label+“”).trigger('create');}
这就是我编写的防止重复的函数:
function checkDublicates(){
var isExist=true;
var x = document.getElementById('option').value;
var labels = [];
$('#after input[type=radio]').each(function() {
labels.push($('label[for='+$(this).attr('id')+']').text());
});
for(var i=0;i<labels.length;i++){
if(x==labels[i])
{
isExist=false;}
else{
isExist=true;}
}
return isExist;}
函数checkDublicates(){
var isExist=true;
var x=document.getElementById('option')。值;
var标签=[];
$('#在输入[type=radio]'之后)。每个(函数(){
labels.push($('label[for='+$(this.attr('id')+']')).text());
});
对于(var i=0;i只需使用$。inArray(val,arr)
就可以了
但是只是一个关于你的代码的评论
替换
document.getElementById('question').value
借
及
借
会更干净;-)只需使用$。inArray(val,arr)
它会工作的
但是只是一个关于你的代码的评论
替换
document.getElementById('question').value
借
及
借
将更干净;-)您可以使用此方便的函数将元素推入数组,同时检查重复项。如果捕获到重复项,它将返回true
var noDupPush = function (value, arr) {
var isDup = false;
if (!~$.inArray(value, arr)) {
arr.push(value);
} else {
isDup = true;
}
return isDup;
};
// You can use it like this
var arr = ['green'];
if (noDupPush('green', arr)){
// Dup exists
}
// Or else it will just push new value to array
您可以使用这个方便的函数将元素推入数组,同时检查重复项。如果捕捉到重复项,它将返回true
var noDupPush = function (value, arr) {
var isDup = false;
if (!~$.inArray(value, arr)) {
arr.push(value);
} else {
isDup = true;
}
return isDup;
};
// You can use it like this
var arr = ['green'];
if (noDupPush('green', arr)){
// Dup exists
}
// Or else it will just push new value to array
您可以生成包含标签文本的id,然后快速检查是否存在包含该文本的元素。例如:
function generateLabelId( userinput ){
return 'awesomelabel_' + userinput.replace(/\W/g,'');
}
var label = document.getElementById(generateLabelId( userinput ));
var labelDoesNotExist = (label == undefined );
if (labelDoesNotExist){
// create your element here
// making sure that you add the id from generateLabelId
}
您可以生成包含标签文本的id,然后快速检查是否存在包含该文本的元素。例如:
function generateLabelId( userinput ){
return 'awesomelabel_' + userinput.replace(/\W/g,'');
}
var label = document.getElementById(generateLabelId( userinput ));
var labelDoesNotExist = (label == undefined );
if (labelDoesNotExist){
// create your element here
// making sure that you add the id from generateLabelId
}
您可以使用$.inArray(val,arr)
检查重复项。您可以使用$.inArray(val,arr)
检查重复项。为什么要用jQuery对象创建和函数调用替换clean属性访问?前者与“clean”一样而且比第二个要快得多。为什么要在这种情况下使用jQuery?因为它更容易看,更容易输入,这比你想象的更重要。更快?你在客户端赢得了几微秒微不足道的时间,但在下载时间(要加载的文本更多)之前,你基本上失去了这些时间!Witch对我来说更重要!是的,就像Elliot说的那样,它更容易理解,对眼睛也更好。否则你就像我在jQuery存在之前做的那样,我创建了一个函数函数getId(var){return document.getElementById(that).value;}
下载量要轻得多为什么要用jQuery对象创建和函数调用替换clean属性访问?前者与“clean”一样而且比第二个要快得多。为什么要在这种情况下使用jQuery?因为它更容易看,更容易输入,这比你想象的更重要。更快?你在客户端赢得了几微秒微不足道的时间,但在下载时间(要加载的文本更多)之前,你基本上失去了这些时间!Witch对我来说更重要!是的,就像Elliot说的那样,它更容易理解,也更利于眼睛。否则你会像我在jQuery存在之前做的那样,我创建了一个函数函数getId(var){return document.getElementById(that).value;}
下载起来更轻松
function generateLabelId( userinput ){
return 'awesomelabel_' + userinput.replace(/\W/g,'');
}
var label = document.getElementById(generateLabelId( userinput ));
var labelDoesNotExist = (label == undefined );
if (labelDoesNotExist){
// create your element here
// making sure that you add the id from generateLabelId
}