2012-04-23 2 views
0

Значение tousers имеет пользователей, разделенных точкой с запятой.Значение jquery, разделенное точкой с запятой

<input type='text' class='tousers' value='admin;user1;user2;user3;useradmin;' /> 

Как я искать, если admin уже существует между точкой с запятой? Таким образом, приведенный ниже код не будет добавлять admin в tousers, потому что он уже существует.

var content = 'admin'; 

var to = input.find('.tousers').val(); 

if(to == "") { 
    input.find('.tousers').val(content); 
} else { 
    input.find('.tousers').val(to + ';' + content); 
} 

ответ

1

Это добавит новый элемент в tousers входного элемента, если он уже не доступен, в противном случае появится оповещение о том, «Уже присутствует»

$(function(){ 
     var newContent = 'user1'; 
     var existingContent=$(".tousers").val() 
     var existingArr=existingContent.split(";") 
     var isPresent=$.inArray(newContent ,existingArr)  
     if(isPresent<0) 
     {  
      $(".tousers").val(existingContent+newContent+";"); 
     } 
     else  
     { 
     alert("Already present"); 
     }  
    }); 

Working образец: http://jsfiddle.net/WsELx/11/

0
if(/\badmin\b/.test('admin;user1;user2;user3;useradmin;')) // has admin inside your string 

Или в вашем случае

if(/\badmin\b/.test(to)) 

регулярное выражение \badmin\b поиск, в строке - для администратора, ограниченного 2 словоразделами

1
var content = 'admin'; 

var text = jQuery('.rousers').val(); 

var values = text.split(';') 

var contentExists = jQuery.inArray(content, values) 
+1

Что делать, если 'administrator' находится в значении вместо' admin'? – user892134

+0

@ user892134: Вы правы, я исправил это. – Andrey

1

Вы можете использовать обычный выражение для проверки, если строка уже находится в значении:

new RegExp("(^|;)" + content + "(;|$)").test(to) 

(с использованием IndexOf недостаточно)

+0

Не тестировали это, но я не использую RegExp, вы рекомендуете какие-либо учебники? – user892134

+0

(^ |;) совпадает либо с началом строки, либо с точкой с запятой, и, аналогично, (; | $) совпадает либо с концом строки, либо с точкой с запятой. – jamalex

+0

Это был сайт, который я изначально использовал для изучения регулярных выражений: http://www.regular-expressions.info/ – jamalex

0

Вы можете использовать $.inArray(value, array)

var content = 'admin'; 
var to = $('.tousers').val(); 
var array = to.split(';'); 

if ($.inArray(content, array) == -1){ 
    $('.tousers').val(to + ';' + content); 
}