Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何防止javascript中的重复条目?_Javascript_Jquery - Fatal编程技术网

如何防止javascript中的重复条目?

如何防止javascript中的重复条目?,javascript,jquery,Javascript,Jquery,我在防止输入重复项方面遇到问题,我使用一个按钮在两个页面中同时动态生成单选按钮,我从用户处获取标签并从该标签生成单选按钮,我希望防止用户输入两个相同的标签,以下是为2页生成收音机的脚本。如有任何帮助,将不胜感激 function createRadioElement(elem, label, checked) { var id = 'option1_' + label; $('#after').append($('<input />', { 'type': 'radio',

我在防止输入重复项方面遇到问题,我使用一个按钮在两个页面中同时动态生成单选按钮,我从用户处获取标签并从该标签生成单选按钮,我希望防止用户输入两个相同的标签,以下是为2页生成收音机的脚本。如有任何帮助,将不胜感激

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
}