带日期的前缀文章关键字(Y-m-d)

时间:2013-10-09 16:26:05

标签: javascript

在我正在构建的CMS中,记录名称必须是唯一的(它们是URL关键字)。为了通过博客文章实现这一点,我试图在PHP中为日期(“Y-m-d”)添加博客文章标题的前缀。

我有一个“标题”输入文本字段,其中输入标题,一个“关键字”文本字段,自动“slu”“标题,以便将其转换为URL关键字。

我无法弄清楚如何将带有标题的标题加上日期。

以下是代码:

<input name="title" type="text" id="title" />

<input name="keyword" type="text" id="slug" />

<script type="text/javascript"> 
$(document).ready(function(){ 
    $("#title").slug();
}); 
</script>

这部分有效。标题成功地变成了一个带空格破折号的关键字,消除了特殊字符等。

我尝试通过添加一个以日期作为值的隐藏字段并使用getElementById函数访问其值来包含日期。我试图重写javascript以将slugged标题与日期连接起来:

<input type = "hidden" id = "postdate" value = "<?php echo date("Y-m-d"); ?>-" />

<script type="text/javascript"> 
$(document).ready(function(){ 
  var getDate = document.getElementById('postdate');
  var doSlug = $("#title").val();
  var slugString = getDate + doSlug;
   $("slugString").slug();
}); 
</script>

但我显然无法正常使用javascript。

我之后的输出将是:“2013-10-09-这个博客帖子的标题”

我哪里错了?

2 个答案:

答案 0 :(得分:0)

怎么样:

$(document).ready(function(){ 
  var getDate = $('#postdate').val(); // get the value of the postdate id, not the element.
  var doSlug = $("#title").val();
  var slugString = getDate + "-" + doSlug;
  $('#title').val(slugString);
  $('#title').slug(); // if needed.
}); 

jQuery slug()函数正在将输入值更改为“slugged”。你不能把它设置为“slugString”,因为那是一个变量,而不是一个dom元素。如有必要,您可以在使用val()设置输入值后“重新插入”。

修改@Oswaldo Acauan选择的getDate变量问题

答案 1 :(得分:0)

Working Fiddle

我建议您对插件执行一些调整,以便能够执行您想要的操作。 正如您在上面的feedle中看到的,我添加了两个新的配置参数

prepend: null, // String to be prepended the sluged string
append: null // String to be appended the sluged string

makeSlug函数上我只添加了这两个条件

if(typeof settings.append === 'string')
    slug = slug + '-' + settings.append;
if(typeof settings.prepend === 'string')
    slug = settings.prepend + '-' + slug;

现在你可以在字符串的slugfy版本中添加或附加一个字符串

$("#title").slug({
    prepend: '2010-10-13',
    append: 'YAYY'
});

如果你决定使用这种方法,这里是如何使用你的html

$(document).ready(function(){ 
   $("#title").slug({ 
       prepend: $('#postdate').val() 
   });
});