javascript - 通过 onkeypress 函数在 JavaScript 中显示元素
问题描述
我试图仅在输入获得值时才显示保存按钮,
问题是,如果我append
为每个输入使用1
打印按钮,我正在寻找的是无论输入长度如何,都只获得一次按钮。
重要的是输入不是空的。
代码
<input class="text_dec form-control" type="text" onkeypress="myFunction()" name="text_dec[]" id="'+ textFieldsCount.toString() +'">
function myFunction() {
$('#moreless').append("button here");
}
任何想法?
解决方案
而不是keypress
, 使用keyup
,这将在释放键时调用侦听器,因此您将获得正确length
的输入值。这样,您可以检查按钮是否必须显示。
此外,我还会进行另一项检查,以确保输入具有某些值,以便在单击时保存。
像下面这样,看看:
$(function(){
$('.myInput').on('keyup', function(){
var btnElem = $('.myButton');
var charLength = this.value.length;
if (charLength > 0){
btnElem.show();
}else {
btnElem.hide();
}
});
$(".myButton").on("click", function(){
if ($('.myInput').val().trim().length < 1){
alert("Input is empty")
return;
}
//Do your code
});
});
.myButton {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
<input class="myInput" type="text" value="">
<input class="myButton" type="button" value="Save Button" />
</body>
现在编辑
,如果你真的需要像以前那样做(我不认为这是一个最佳实践,并且如果你真的想通过这个也建议你重新考虑)这里有一个可以帮助你的代码。点击显示。
在这里,我添加了函数并创建了按钮元素(如果需要),然后仅在输入具有某个值长度时将其附加到 DOM。
function myFunction(input){
var btnElem = $(".mySaveButton")[0];
if (!btnElem){
btnElem = document.createElement("button");
btnElem.textContent = "Save Button";
btnElem.onclick = btnClicked;
btnElem.className = "mySaveButton";
}
var charLength = input.value.length;
if (charLength > 0){
document.body.append(btnElem);
}else {
btnElem.remove();
}
};
function btnClicked(){
if ($('.myInput').val().trim().length < 1){
alert("Input is empty")
return;
}
//Do your code
};
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
<input class="myInput" type="text" value="" onkeyup="myFunction(this)">
</body>
推荐阅读
- sql - 在一个查询中加入 2 个选择
- c++ - 在 C++ 中使用元组作为元素访问元组
- javascript - JavaScript 不适用于 bootstrap 4 + thymeleaf
- php - .htaccess 允许执行 php 文件
- c# - 使用 VSTO 使在 C# 中创建的类型可以从 vba 访问
- c++ - 如何解决 OpenGL/GLSL 上的观察矩阵问题
- swift - 从 compactMap 返回和退出
- service - 如何在 yocto 中删除 systemd 的服务?
- angular - 离子深度链接错误,离子 3 / Angular 5 应用程序
- android-recyclerview - 如何在具有其他视图的一个活动中包含一个 recyclerView(包含项目列表)