我可以想到一些真正丑陋的解决方案,但我希望有一些优雅的天才。我有一个表单,它将一个名称作为输入并将该名称发送给一个函数。现在我需要将名称删除到它的首字母(例如'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());
})
答案 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>