来自数组nodejs的下拉列表
Droplist from array nodejs
我想创建一个使 appair 成为下拉列表的按钮。此下拉列表的内容通过我的数据库中的数组传递到我的 EJS。
这是我到目前为止得到的:
EJS :
<form class="" action="/post" method="post">
// some inputs here
<div class="container">
<p>Select a related list of keywords :</p>
<div class="container1">
<button class="add_form_field1">keywords
<span style="font-size:16px; font-weight:bold;"> + </span>
</button>
</div>
</div class="container">
<button type="submit">Submit</button>
</form>
// some more code not relevant here, and my script for the magic to (not) append :
<script>
$(document).ready(function() {
var max_fields = 10;
var wrapper = $(".container1");
var add_button = $(".add_form_field1");
var x = 1;
$(add_button).click(function(e) {
e.preventDefault();
if (x < max_fields) {
x++;
$(wrapper).append('<div> <select name="role"> <% if(typeof keywords == 'object' &&
keywords.length > 0){ %><% for(var j = 0; j < keywords.length; j++) {%><option
value='keywords[j]'>keywords[j]</option> <% } %> <% } %> </>select> <a href="#"
class="delete">Delete</a></div>'); //add selectbox
} else {
alert('You Reached the limits')
}
});
$(wrapper).on("click", ".delete", function(e) {
e.preventDefault();
$(this).parent('div').remove();
x--;
})
});
</script>
这是我的应用程序相关代码:
app.get('/post', isLoggedIn, (req, res) =>{
db.collection('keywords').find().toArray()
.then(results => {
res.render('test.ejs', {keywords:results})
})
.catch(error => console.error(error))
})
主要问题是 container1 中的按钮直接“发布”表单而没有执行任何与脚本相关的操作。
有人可以帮忙吗? :)
编辑:将 div class"container1" 的内容更改为:
div class="container1">
<select name="keyword[]"><% for(var j = 0; j < keywords.length; j++) {%><option value='<%=keywords[j]._id%>'><%=keywords[j].keyword%></option> <% } %> </select>
<button type="button" role="button" class="add_form_field1">Add keywords
<span style="font-size:16px; font-weight:bold;"> + </span>
</button>
第一个下拉列表的显示部分就像一个魅力,提交按钮(正确的那个)也是如此,但仍然面临应该让更多下拉列表出现的按钮的问题..
解决方案:
感谢@Kinglish
脚本:
<script>
$(document).ready(function() {
var max_fields = 10;
var wrapper = $(".container1");
var add_button = $(".add_form_field1");
var x = 1;
(add_button).click(function(e) {
e.preventDefault();
if (x < max_fields) {
x++;
wrapper.append('<div> <select name="keyword[]"> <% for(var j = 0; j < keywords.length; j++) {%><option value=<%=keywords[j]._id%>><%=keywords[j].keyword%></option> <% } %> </select> <a href="#" class="delete">Delete</a></div>');
} else {
alert('You Reached the limits')
}
});
wrapper.on("click", ".delete", function(e) {
$(this).parent('div').remove();
x--;
})
});
</script>
EJS:
<div class="container">
<p>Select a related list of keywords :</p>
<div class="container1">
<button type="button" role="button" class="add_form_field1">Add keywords
<span style="font-size:16px; font-weight:bold;"> + </span>
</button>
</div>
在表单中,所有按钮都被视为提交按钮。
你必须以某种方式告诉表单这不是我的提交按钮。
如果 type 不起作用,您必须在按钮标签中添加 type="button"
添加角色=“按钮”
希望有用!!
有很多导致 JS 错误的小拼写错误,导致代码无法执行并导致表单提交。请查看以下内容并从中更新您的代码。我删除了 asp 循环,因此可以对其进行测试,但您可以轻松地将其放回
// some more code not relevant here, and my script for the magic to (not) append :
$(document).ready(function() {
var max_fields = 10;
var wrapper = $(".container1");
var add_button = $(".add_form_field1");
var x = 1;
add_button.click(function(e) {
e.preventDefault();
if (x < max_fields) {
x++;
wrapper.append('<div><select name="role"><option>test</option></select><a href="#" class="delete">Delete</a></div>'); //add selectbox
} else {
alert('You Reached the limits')
}
});
wrapper.on("click", ".delete", function(e) {
$(this).parent('div').remove();
x--;
})
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form class="" action="/post" method="post">
<div class="container">
<p>Select a related list of keywords :</p>
<div class="container1">
<button class="add_form_field1">keywords
<span style="font-size:16px; font-weight:bold;"> + </span>
</button>
</div>
</div>
<button type="submit">Submit</button>
</form>
我想创建一个使 appair 成为下拉列表的按钮。此下拉列表的内容通过我的数据库中的数组传递到我的 EJS。
这是我到目前为止得到的:
EJS :
<form class="" action="/post" method="post">
// some inputs here
<div class="container">
<p>Select a related list of keywords :</p>
<div class="container1">
<button class="add_form_field1">keywords
<span style="font-size:16px; font-weight:bold;"> + </span>
</button>
</div>
</div class="container">
<button type="submit">Submit</button>
</form>
// some more code not relevant here, and my script for the magic to (not) append :
<script>
$(document).ready(function() {
var max_fields = 10;
var wrapper = $(".container1");
var add_button = $(".add_form_field1");
var x = 1;
$(add_button).click(function(e) {
e.preventDefault();
if (x < max_fields) {
x++;
$(wrapper).append('<div> <select name="role"> <% if(typeof keywords == 'object' &&
keywords.length > 0){ %><% for(var j = 0; j < keywords.length; j++) {%><option
value='keywords[j]'>keywords[j]</option> <% } %> <% } %> </>select> <a href="#"
class="delete">Delete</a></div>'); //add selectbox
} else {
alert('You Reached the limits')
}
});
$(wrapper).on("click", ".delete", function(e) {
e.preventDefault();
$(this).parent('div').remove();
x--;
})
});
</script>
这是我的应用程序相关代码:
app.get('/post', isLoggedIn, (req, res) =>{
db.collection('keywords').find().toArray()
.then(results => {
res.render('test.ejs', {keywords:results})
})
.catch(error => console.error(error))
})
主要问题是 container1 中的按钮直接“发布”表单而没有执行任何与脚本相关的操作。
有人可以帮忙吗? :)
编辑:将 div class"container1" 的内容更改为:
div class="container1">
<select name="keyword[]"><% for(var j = 0; j < keywords.length; j++) {%><option value='<%=keywords[j]._id%>'><%=keywords[j].keyword%></option> <% } %> </select>
<button type="button" role="button" class="add_form_field1">Add keywords
<span style="font-size:16px; font-weight:bold;"> + </span>
</button>
第一个下拉列表的显示部分就像一个魅力,提交按钮(正确的那个)也是如此,但仍然面临应该让更多下拉列表出现的按钮的问题..
解决方案:
感谢@Kinglish 脚本:
<script>
$(document).ready(function() {
var max_fields = 10;
var wrapper = $(".container1");
var add_button = $(".add_form_field1");
var x = 1;
(add_button).click(function(e) {
e.preventDefault();
if (x < max_fields) {
x++;
wrapper.append('<div> <select name="keyword[]"> <% for(var j = 0; j < keywords.length; j++) {%><option value=<%=keywords[j]._id%>><%=keywords[j].keyword%></option> <% } %> </select> <a href="#" class="delete">Delete</a></div>');
} else {
alert('You Reached the limits')
}
});
wrapper.on("click", ".delete", function(e) {
$(this).parent('div').remove();
x--;
})
});
</script>
EJS:
<div class="container">
<p>Select a related list of keywords :</p>
<div class="container1">
<button type="button" role="button" class="add_form_field1">Add keywords
<span style="font-size:16px; font-weight:bold;"> + </span>
</button>
</div>
在表单中,所有按钮都被视为提交按钮。
你必须以某种方式告诉表单这不是我的提交按钮。
如果 type 不起作用,您必须在按钮标签中添加 type="button" 添加角色=“按钮”
希望有用!!
有很多导致 JS 错误的小拼写错误,导致代码无法执行并导致表单提交。请查看以下内容并从中更新您的代码。我删除了 asp 循环,因此可以对其进行测试,但您可以轻松地将其放回
// some more code not relevant here, and my script for the magic to (not) append :
$(document).ready(function() {
var max_fields = 10;
var wrapper = $(".container1");
var add_button = $(".add_form_field1");
var x = 1;
add_button.click(function(e) {
e.preventDefault();
if (x < max_fields) {
x++;
wrapper.append('<div><select name="role"><option>test</option></select><a href="#" class="delete">Delete</a></div>'); //add selectbox
} else {
alert('You Reached the limits')
}
});
wrapper.on("click", ".delete", function(e) {
$(this).parent('div').remove();
x--;
})
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form class="" action="/post" method="post">
<div class="container">
<p>Select a related list of keywords :</p>
<div class="container1">
<button class="add_form_field1">keywords
<span style="font-size:16px; font-weight:bold;"> + </span>
</button>
</div>
</div>
<button type="submit">Submit</button>
</form>