JQuery - поиск предыдущего символа - PullRequest
1 голос
/ 13 октября 2010

Я новичок в JQuery, поэтому этот вопрос может быть очевидным, но у меня есть кое-что, что добавляет текст к тому, что уже находится в поле ввода:

$('a.blog_category').click(function(){

  var current_value = $('#id_category').val();

  $('#id_category').val(current_value + ', '+ this.text);
  return false
})

Я хотел бы добавитьпредложение if звучит так:

«Если в конце строки уже есть запятая, не добавляйте запятую».«Если запятой еще нет, И это не первый элемент во вводимом тексте, добавьте запятую.»

Надеюсь, это имеет смысл.

Заранее спасибо за любую помощь.

Ответы [ 4 ]

1 голос
/ 13 октября 2010

Вот обновленная функция, показывающая, как я могу выполнить это с помощью регулярных выражений.

$('a.blog_category').click(function(){

     var current_value = $('#id_category').val();
     if (!current_value.match(/,$/) && !current_value.match(/^,/)) {
         // no commas were found in the wrong places :)
         $('#id_category').val(current_value + ', '+ this.text);
         return false;
     } else {
         // commas were found...don't put a comma :(
         $("#id_category").val(current_value + ' ' + this.text)
});
1 голос
/ 13 октября 2010

Самый простой способ - просто написать логику, чтобы проверить все, что вы упомянули.Может быть, с селекторами будет чище, но мне придется больше думать об этом.Но выполнение чего-то подобного должно работать:

$('a.blog_category').click(function(){

  var current_value = $('#id_category').val();

  if (current_value.charAt(current_value.length - 1) != "," && current_value.indexOf(",") > -1)
{
  $('#id_category').val(current_value + ', '+ this.text);
}
else
{
  $('#id_category').val(current_value + this.text);
}
  return false
})

РЕДАКТИРОВАТЬ: Пропустить выше.Я думаю, что вы просто ищете что-то подобное, так что, возможно, это будет работать лучше.Логика действительно не нужна:

$('a.blog_category').click(function(){

  var current_value = $('#id_category').val();
    var parts = current_value.split(",");

    parts.push(this.text);

if (parts[0] == "")
    parts.splice(0,1);

  $('#id_category').val(parts.join(","));

  return false
})​
1 голос
/ 13 октября 2010

не совсем уверен, есть ли у jQuery вспомогательная функция, но вы можете добиться этого, используя простой Javascript со следующим:

if (current_value.charAt(current_value.length - 1) != ',') {
    current_value = current_value + ',';
}
0 голосов
/ 13 октября 2010

Попробуйте:

$('a.blog_category').click(function(){

  var current_value = $('#id_category').val();

stringArray = current_value.split(",");  if(stringArray.length>= 1) {

//Split the string into an array and check the number of items in array

if (current_value.charAt(current_value.length)!=","){

//Check what the last character in the string is - apply comma if needed

  $('#id_category').val(current_value
+ ', '+ this.text);

} }   return false })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...