只允许使用字母和空格并将每个单词大写

时间:2016-05-22 07:22:20

标签: javascript html forms input

我只需要输入字母,我还需要使用javascript来大写每个单词的第一个字母。我有第一个工作在按键,我希望第二个工作onblur,但我不能让它工作。如果我自己使用它,它可以正常工作。我已经尝试了很多东西,但我必须遗漏一些小东西,我只是无法弄清楚它是什么。

HTML

<tr>
<td>
<input type="text" name="first_names" onkeypress="return isAlfa(event)" onblur="toTitleCase()">
</td>
<td>
<input type="text" name="last_names" onkeypress="return isAlfa(event)" onblur="toTitleCase()">
</td>
</tr>

JAVASCRIPT

function isAlfa(evt) {
    evt = (evt) ? evt : window.event;
    var charCode = (evt.which) ? evt.which : evt.keyCode;
    if (charCode > 32 && (charCode < 65 || charCode > 90) && (charCode < 97 || charCode > 122)) {
        return false;
    }
    return true;
}

function toTitleCase(str)
{
    return str.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});
}

请协助

1 个答案:

答案 0 :(得分:4)

您需要重新分配输入的值,例如比如onblur="this.value = toTitleCase(this.value)"

function isAlfa(evt) {
  evt = (evt) ? evt : window.event;
  var charCode = (evt.which) ? evt.which : evt.keyCode;
  if (charCode > 32 && (charCode < 65 || charCode > 90) && (charCode < 97 || charCode > 122)) {
    return false;
  }
  return true;
}

function toTitleCase(str) {
  return str.replace(/\w\S*/g, function(txt) {
    return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
  });
}
<input type="text" name="first_names" onkeypress="return isAlfa(event)" onblur="this.value = toTitleCase(this.value)">