【问题标题】:Capitalise Each Word of what is contained within an input field将输入字段中包含的内容的每个单词大写
【发布时间】:2012-07-29 12:25:38
【问题描述】:

我在 Stackoverflow 上找了一个小时,但不幸的是,我无法将其应用于我的情况。我不是编码员,所以请调整您对我的代码的响应。在我们的电子商务网站上,买家以小写字母输入他们的地址和姓名。由于各种原因,我们不希望这样,并且希望每个单词大写的 STORED 数据(因此 text-transform 的 CSS)不适用于后端。

假设字段名是:

<input type="text" value="" name="FormField[1][1]" id="FormField_1" class="Textbox Field200 FormField">

我需要在上面的代码中添加什么以及我需要在该部分中添加什么以使每个单词都以大写开头?

非常感谢。

【问题讨论】:

  • 这里有一个答案:stackoverflow.com/questions/196972/…
  • 谢谢,但是我应该把它放在哪里(在头部并在代码周围包裹 JS 标签),我需要为我在原始帖子中提供的代码更改任何内容吗?

标签: javascript capitalization capitalize


【解决方案1】:

实际上,抱歉,现在我想起来了,您应该在服务器端执行此操作。 因此需要更多信息来告诉我们您在服务器端使用的语言(例如 php、C# 等)。您提供的代码是位于客户端的 HTML,这意味着您不会真正处理那里的文本(用户的详细信息)。

我敢肯定,如果你告诉我们服务器端代码是什么,会有更多人提供意见。

编辑 流程如下:

Client-side form   ->  Server-side processing -> Database storage
+---------------+          +----------+          +------------+
|   Name: ted   |    ->    | ted->Ted |    ->    | Name: Ted  |
+---------------+          +----------+          +------------+

编辑 2 假设您发布的示例字段是名字。这未经测试,所以我不确定它是否有效:

$first_name = ucwords($_POST["FormField[1][1]"]);
// $_POST gets the value from the form with the 'name' attribute as 'FormField[1][1]'
// ucwords() is a php function to capitalise the first letter of each word in a sentence.

【讨论】:

  • 在客户端页面上没有简单的方法,尽管在用户点击文本框外部之后,它会检查每个单词是否大写,或者在客户端输入新单词时检查每个单词是否大写?谢谢。
  • 老实说,我在 Javascript 方面的经验并不多,所以帮不上什么忙。
  • 感谢您编辑的评论。我不想开始深入研究 PHP 代码本身。有人可以说是否可以从 HTML 中调用一些 javascript 代码?请告诉我。
  • 我在您的问题中添加了 javascript 标签,以便您得到更好的答复。您可能需要考虑更新您的原始问题,以提及您想要一个 Javascript 解决方案,当用户点击文本框时,文本会更新为大写的首字母。
【解决方案2】:

由于您在这里没有得到答案,我想我会试一试。

首先,您需要使用Javascript的onblur()函数来检测用户何时从输入框中点击了离开

 <input type="text" onblur="upperCaseFirstLetters(this.id) value="" name="FormField[1][1]" id="FormField_1" class="Textbox Field200 FormField"">

onblur() 调用 upperCaseFirstLetters() 函数。 this.id 在该函数的括号内获取文本框的 id,以便您可以对其中包含的文本进行维护。

最后,你需要在script标签中创建函数。

<head>
<script type="text/javascript">
    function upperCaseFirstLetters(elm) {
        var myTextObject = document.getElementById(elm);
        myTextObject.value = myTextObject.value.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});
    }
</script>
</head>

输入框的元素存储在变量myTextObject中,通过它的id获取元素。 myTextObject.value 是输入框中的实际文本。所以你使用我最初linked你的函数将每个单词的第一个字母设置为大写。

【讨论】:

  • 非常感谢您的回复。我有这个作为代码,但不确定它是否正确。我不确定要更改哪些部分,即调用输入字段的具体内容以及代码的实际部分。请问您对下面的内容有什么看法? &lt;input type="text" class="Textbox Field150 InitialFocus" onblur="upperCaseFirstLetters(ABC123)" name="login_email" id="login_email" /&gt;
  • &lt;script type="text/javascript"&gt; function upperCaseFirstLetters(ABC123) { var myTextObject = document.getElementById(ABC123); ABC123.value = ABC123.value.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();}); } &lt;/script&gt;
【解决方案3】:
<script type="text/javascript"> 

function upperCaseFirstLetters(ABC123) {
    var myTextObject = document.getElementById(ABC123);
    myTextObject.value = myTextObject.value.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});

}

 <input type="text" class="Textbox Field150 InitialFocus" onblur="upperCaseFirstLetters(this.id)" name="login_email" id="login_email">

您必须在每个输入

完全使用这行代码
onblur="upperCaseFirstLetters(this.id)"

该功能无需修改。只要在输入中包含上述代码行,该功能就可以工作。

【讨论】:

    猜你喜欢
    • 2018-03-21
    • 1970-01-01
    • 2013-06-30
    • 1970-01-01
    • 2015-11-10
    • 2019-08-25
    • 2011-07-07
    • 1970-01-01
    • 2010-10-16
    相关资源
    最近更新 更多