Skip to content

Instantly share code, notes, and snippets.

@jamesmk
Created August 7, 2012 22:02
Show Gist options
  • Save jamesmk/3289782 to your computer and use it in GitHub Desktop.
Save jamesmk/3289782 to your computer and use it in GitHub Desktop.
js sluggify
var slugify = function(text) {
text = text.replace(/^\s+|\s+$/g, ''); // trim
text = text.toLowerCase();
// remove accents
var from = "àáäâèéëêìíïîòóöôùúüûñç·/_,:;";
var to = "aaaaeeeeiiiioooouuuunc------";
for (var i=0, l=from.length ; i<l ; i++) {
text = text.replace(new RegExp(from.charAt(i), 'g'), to.charAt(i));
}
text = text.replace(/[^a-z0-9 -]/g, '') // remove invalid chars
.replace(/\s+/g, '-') // collapse whitespace and replace by -
.replace(/-+/g, '-'); // collapse dashes
return text;
}
$(function(){
var $slug_field = $('.slugify'),
$slug_base = $('.slug_base');
// if slug is empty, let's activate slugify
if ($slug_field.val() === '') {
$slug_field.addClass('active');
// if the slug base already has content, let's prefill the slug
if ($slug_base.val() !== '') {
$slug_field.val(slugify($slug_base.val()));
}
};
// if slugify active, update slug on slug base change
$slug_base.change(function(){
if ($slug_field.hasClass('active')) {
$slug_field.val(slugify($slug_base.val()));
}
});
// if slug get's changed manually, let's deactivate slugify
$slug_field.change(function(){
$slug_field.removeClass('active');
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment