1

在我的 HTML 表单上,用户可以输入他们的姓名。然后,他们的名字将作为书名的一部分出现在 DIV 中。

书名使用撇号(例如Amy's Holiday Album)。

如果用户输入的名称以 S 结尾,我不希望出现撇号 s。(例如它应该是Chris's Holiday Album而不是Chris's Holiday Album)。

我也只希望在表单具有类的情况下发生这种情况apostrophe。如果此类不存在,则应按原样复制名称,不带任何撇号或“s”。

我知道你可以使用 slice() 来获取元素的最后一个字符,所以我想我可以将它与 if 语句结合起来。但这似乎不起作用。

这是JSFiddle

这是我的 HTML:

<div><b class="title"></b> Holiday Album</div>

这是我的jQuery(1.8.3):

$(文档).ready(函数() {

$('.name').keyup(function() {


    var finalname = text($(this).val());

    var scheck = finalname.slice(-1);

    var finaltitle;


    if ($(".apostrophe")[0]) {


        if (scheck == 's') {
            finaltitle = finalname + "'";
        }


        else {
            finaltitle = finalname + "'s";
        }


        $('.title').text(finaltitle);
    }

    else {
        $('.title').text(finalname);

    }

}); 

});

4

3 回答 3

1

不需要文本方法

var finalname = $(this).val();

检查小提琴

于 2013-10-30T12:25:39.617 回答
1

利用

var finalname = $(this).val();

代替

var finalname = text($(this).val());
于 2013-10-30T12:28:12.663 回答
1

简化版

$(document).ready(function() {

    //Code fires when user starts typing:
    $('.name.apostrophe').keyup(function() {
        if (this.value.indexOf("'s") != -1 )  {
            $('.title').text(this.value.replace(/'s/g, "'"));
        } else {
             $('.title').text(this.value)
        }
    }); /* Capture Personalised Message */

});

这也将仅用 ' 替换所有出现的 's。

希望能帮助到你!。

于 2013-10-30T12:37:48.633 回答