将字符串转换为标题大小写不起作用,并使用输入字符串all javascript填充div标记

将字符串转换为标题大小写不起作用,并使用输入字符串all javascript填充div标记,javascript,html,Javascript,Html,我一直在努力使用以下代码。基本上,我以这个例子为例,并在使用它,我也有一个代码,它采用名称并将其填充到div标记中,但是,它似乎会向下移动文本,因此,例如,当我键入john smith时,我没有得到约翰·史密斯的提名,然后在提名的地方写上父亲的全名,但把剩下的部分下移一行,所以父亲的全名下移一行,有人能帮我解决这个问题吗 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.

我一直在努力使用以下代码。基本上,我以这个例子为例,并在使用它,我也有一个代码,它采用名称并将其填充到div标记中,但是,它似乎会向下移动文本,因此,例如,当我键入john smith时,我没有得到约翰·史密斯的提名,然后在提名的地方写上父亲的全名,但把剩下的部分下移一行,所以父亲的全名下移一行,有人能帮我解决这个问题吗

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en-GB">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>hello whirled</title>
</head>
<body>
    <h1>Bla Bla
    </h1>
    <form name="input" action="submit.php" method="post">
        <p>
            Other Text goes here
        </p>
        <p>
            How do you wish to be referred to informally?
             <input id="name1" type="text" name="groominame" onchange="toTitleCase(this.value); fathersName(this.value);" />
        </p>
        <div id="display1"></div>
        's full name:
        <input type="text" name="fname" />
        <noscript>
            <div>
                If you can see this then SCRIPTS are turned OFF on your machine and it won't work 
            </div>
        </noscript>
        <script type="text/javascript">
            function toTitleCase(str) {
                alert(str); //test
                return str.replace(/\w\S*/g, function (txt) {
                    return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
                });
            }

            function fathersName(textarea) {
                alert(textarea); //test
                document.getElementById("display1").innerHTML = textarea;
            }

        </script>
    </form>
</body>
</html>

你好旋风
布拉布拉

其他文本在这里

你希望被非正式地介绍给谁?

的全名: 如果您能看到这一点,那么您的机器上的脚本将被关闭,它将无法工作 函数toTitleCase(str){ 警报(str);//测试 返回str.replace(/\w\S*/g,函数(txt){ 返回txt.charAt(0.toUpperCase()+txt.substr(1.toLowerCase(); }); } 函数父名称(textarea){ 警报(textarea);//测试 document.getElementById(“display1”).innerHTML=textarea; }
您需要首先将其转换为大写,然后显示它。您只需将其返回到别处,而不是将其保存在变量中或将其放置在正确的位置。 div会移动,因为在div的末尾有一条新行,如果不希望有效果,请使用span元素

<div id="display1" style="float: left;margin: 3px 0px;"></div>
所以输入标记更改为

 <input id="name1" type="text" name="groominame" onChange=" fathersName(this);"/>

如果您只想在其他字段中使用toTitleCase,则使用
toTitleCase(this)


您的JavaScript语法根本不起作用……我知道一个简单的JQuery代码,您更喜欢它?您没有使用返回值
toTitleCase
执行任何操作。你以某种方式转换输入,但你没有使用输出。我不知道你的意思是什么Alexandre?父亲的名字在我的电脑上起作用,它确实替换了DIV框中的文本,但我无法使它大写。@Dino也许你应该试试
document.getElementById(“name1”).value=name我需要输入的字段在离开输入字段后也更改为大写。这就是为什么我把它们放在一个单独的函数中,所以mohamedrias,当我尝试上面相同的函数来填充输入字段时,它不会这样做。你知道为什么吗?我已经更新了答案,仍然不需要两个函数:)而不是传递this.value,你只需要在fathersName(this)中传递this;我明白了,但我确实需要将这些函数分开,因为我在其他输入值上使用convert-to-upper-case。例如,我有另一个名为Brides Name的字段,所以一旦他们离开该字段,就需要自动将其大写(名称的第一部分)。希望你能理解。
 <input id="name1" type="text" name="groominame" onChange=" fathersName(this);"/>