gpt4 book ai didi

javascript - 如果输入字段包含文本,如何触发函数?

转载 作者:行者123 更新时间:2023-12-03 00:15:49 25 4
gpt4 key购买 nike

下面的工作 JS Fiddle: https://jsfiddle.net/b63t295x/2/

我有一系列 div,每个 div 都包含一个问题、一个输入字段和一个充当按钮的文本链接,单击该按钮时,将切换当前显示的 div 并将其替换为行中的下一个:

<head>
<script type="text/javascript">
function displayquestion(a){
var questions = document.getElementsByClassName("questionholder");
for(var i=0; i < questions.length; i++) {
questions[i].style.display = "none";
}

var nextQuestion = document.getElementById("question" + a);

if(nextQuestion !== null) {
nextQuestion.style.display = "block"
}
}
</script>
</head>

<div id="requiredMessage" style="display:none">This field is required.
</div>

<form id="TheForm" style="display:block;">
<div class="questionholder" id="question0" style="display:block">
<a class="text2button" onclick="displayquestion(1)">Start</a>
</div>
<div class="questionholder" id="question1" style="display:none">
<h5>Surname</h5>
<input id="required" name="ln"><br>
<a class="text2button" onclick="displayquestion(2)">Next</a>
</div>
<div class="questionholder" id="question2" style="display:none">
<h5>Given Name</h5>
<input name="gn"><br>
<a class="text2button" onclick="displayquestion(3)">Next</a>
</div>
.... and so on 35 times
</form>

但是,我希望“下一步”按钮仅在输入字段已填写时才起作用(内容并不重要,只是不为空)。

如果没有 jQuery,如何实现这一点?

更新

JSFIDDLE for the following :到目前为止,如果输入为空,我会显示一条错误消息。但是,如果我输入某些内容,它就不会转到下一个问题。

    function displayquestion(a){
var currentDIV = document.getElementById("question" + a);
var currentInput = document.querySelector('input').value;
var questions = document.getElementsByClassName("questionholder");
var showRequired = document.getElementById("requiredMessage");
console.log(currentInput == '');

if (a == 1){ // Enter here all question # that should be IGNORED. question0 = 1, question1 = 2, etc
showRequired.style.display = "none";

for(var i=0; i < questions.length; i++) {
questions[i].style.display = "none";
}

var nextQuestion = document.getElementById("question" + a);

if(nextQuestion !== null) {
nextQuestion.style.display = "block";
}
} else {
if (currentInput == '') {
showRequired.style.display = "block";
}
}
}

最佳答案

您可以在输入的 keyup 事件处理程序上显示 next 按钮。

document.querySelectorAll(".inputText").forEach(function(inputItem){
inputItem.addEventListener("keyup", function(event){
if(event.target.value==""){
((event.target).closest("div")).getElementsByTagName("a")[0].style.display = "none";
}else{
((event.target).closest("div")).getElementsByTagName("a")[0].style.display = "block";
}
});
});

请参阅下面的片段:

displayquestion(1);

function displayquestion(a){
var questions = document.getElementsByClassName("questionholder");
for(var i=0; i < questions.length; i++) {
questions[i].style.display = "none";
}

var nextQuestion = document.getElementById("question" + a);
if(nextQuestion !== null) {
nextQuestion.style.display = "block";
nextQuestion.querySelector(".text2button").style.display = "none";
}
}

document.querySelectorAll(".inputText").forEach(function(inputItem){
inputItem.addEventListener("keyup", function(event){
if(event.target.value.trim()==""){
((event.target).closest("div")).getElementsByTagName("a")[0].style.display = "none";
}else{
((event.target).closest("div")).getElementsByTagName("a")[0].style.display = "block";
}
});
});
<form id="TheForm" style="display:block;">
<div class="questionholder" id="question1" style="display:none">
<h5>Requested Surname</h5>
<input name="ln" class="inputText"><br>
<a class="text2button" onclick="displayquestion(2)">Next</a>
</div>
<div class="questionholder" id="question2" style="display:none">
<h5>Given Name</h5>
<input name="gn" class="inputText"><br>
<a class="text2button" onclick="displayquestion(3)">Next</a>
</div>
.... and so on 35 times
</form>

关于javascript - 如果输入字段包含文本,如何触发函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54524614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com