在我正在构建的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-这个博客帖子的标题”
我哪里错了?
答案 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)
我建议您对插件执行一些调整,以便能够执行您想要的操作。 正如您在上面的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()
});
});