在jQuery中,如何从表单的名称字段中提取首字母?

时间:2018-01-13 17:48:41

标签: jquery forms input

我可以想到一些真正丑陋的解决方案,但我希望有一些优雅的天才。我有一个表单,它将一个名称作为输入并将该名称发送给一个函数。现在我需要将名称删除到它的首字母(例如'John Doe'变成'JD')并发送它。

任何建议。 (我会说最好不要涉及正则表达式,但我觉得我在这个分数上不会很幸运。)

<form>
<div class="form-group">
    <div>
      <input type="text" class="form-control" name="yourName">
    </div>
</div>
<div class="form-group">
<button type="submit" class="btn" onclick="id.push(yourName)">Tell us your name</button>
</div>
</form>

编辑: 回应某人的礼貌请求,提供我尝试过的详细信息: 我的想法是看一下mouseout上name字段的值并以这种方式提取首字母。不幸的是,尽管jQuery选择了mouseout事件,但它并没有为该字段赋予任何价值。

以下是相关代码:

$("input[name=yourName]").mouseout(function(){
   console.log($("input[name=yourName]").val());
})

2 个答案:

答案 0 :(得分:1)

有很多方法可以做到这一点但是因为你宁愿避免使用正则表达式,你将不得不做一些位工作。在这个例子中,我只是将输入值分成一个单词数组,然后取每个单词的第一个字母:

$(function() {
  function getInitials(valStr) {
    var words = valStr.split(" "),
      initials = "";
    words.forEach(function(word) {
      initials += word.charAt(0);
    });
    return initials.toUpperCase();
  }
  $("input[name=yourName]").mouseout(function() {
    var val = $(this).val();
    console.log(val);
    console.log(getInitials(val));
  })
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
  <input name="yourName" />
</form>

答案 1 :(得分:0)

我的解决方案是 - &gt;

<script>
var getInitials = function(name){
    var inits = "";
    var names=name.toUpperCase().split(" ");
    for (var i = 0; i < names.length; i++){
        inits += names[i].charAt(0)+".";
    }
    return inits;
}
</script>


var initials = "";

 <div class="signup-form">
<form>
<div class="form-group">
<input type="text" onBlur="initials=getInitials(this.value)" class="form-control" name="yourName">
</div>
<div class="form-group">
<button type="submit" class="btn btn-block btn-info" onclick="_id.push(initials)">Sign Up</button>
</div>
</form>
</div>