我有一个显示textarea
点击div
。
我希望它:
- 显示第一个
textarea
- 检查第一个
textarea
是否为空 - 如果为空,则不显示第二个
textarea
- 如果不为空,则显示第二个
textarea
Html codde:
<div class= "flex-container">
<div id= "cardarea" class ="parent2">
<span><b id ="cardtitle">Stuff To Try (this is a list)</b>
</span>
<span>
<i class ="fa fa-ellipsis-h" title ="List Actions" tabindex="0"
data-trigger ="focus" data-toggle="popover" ></i>
</span>
<div id="popover-content" style="display:none;">
<ul style ="margin:0; padding:0; list-style: none;"
class ="pop-over-list" >
<li >
<a id = "newcard" href="#" onclick="addcard()" >
<b style ="color: #444444">Add Card...</b>
</a>
</li>
</ul>
</div>
</div>
我的jQuery代码:
function addcard() {
var counter = 0;
var newTextBoxDiv = $(document.createElement('textarea'))
.attr("id", 'TextBoxDiv' + counter);
var button = $(document.createElement('button'));
newTextBoxDiv.css("margin-top", "6px");
newTextBoxDiv.css("width", "210px");
newTextBoxDiv.css("margin-left", "8px");
newTextBoxDiv.css("margin-bottom", "6px");
newTextBoxDiv.css("border-radius", "5px");
newTextBoxDiv.appendTo("#cardarea").insertAfter('#cardtitle');
button.appendTo("#cardarea").insertAfter(newTextBoxDiv);
button.css("margin-left", "8px");
button.css("height", "30px");
button.css("width", "55px");
button.css("margin-bottom", "6px");
button.addClass("btn btn-success");
button.text("Add");
button.css("font-weight", "bold");
//button.appendTo("#cardarea").insertAfter(" <span class='glyphicon
glyphicon - remove '</span>");
if ($(newTextBoxDiv).val().length != 0) {
alert("hello1");
} else if ($(newTextBoxDiv).val().length === 0) {
$('#newcard').hide();
}
}
你的代码很混乱。您正在使用jQuery,但不是以jQuery的方式。看起来你正在混合vanilla JavaScript和jQuery。此外,你正在使用jQuery附加很多CSS,如果你想设置它的样式,请使用CSS设置它。就问题而言,仅当前一个元素中的字符很少时,您才希望附加一个新的textarea
元素。
所以我从头开始编写了一些代码,因为你的代码非常混乱。在这里,在我添加新textarea
之前,我使用 wrapper.find('textarea').last().val().length
选择最后一个附加的textarea
,如果它返回超过 0
,它将附加一个新的textarea
否则它会忽略。
var wrapper = $('#show-textarea');
$('#add-textarea').on('click', function() {
if(wrapper.find('textarea').last().val().length) {
wrapper.append('<textarea></textarea>');
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="show-textarea">
<textarea></textarea>
</div>
<input type="button" id="add-textarea" value="Add Textarea">
注意:我在这里不使用
.trim()
,但我建议使用它。如果 您不需要,用户可以通过在中添加空格来创建新textarea
上一个textarea
元素,它将愉快地返回1
length
.
从调用"addcard"的位置传递"计数器"。在全球范围内保持其价值。
function addcard(counter) {
var oldTextBoxDiv = $("#TextBoxDiv" + counter);
if (oldTextBoxDiv.val().length != 0) {
var newTextBoxDiv = $(document.createElement('textarea')).attr("id", 'TextBoxDiv' + counter);
var button = $(document.createElement('button'));
newTextBoxDiv.css("margin-top", "6px");
newTextBoxDiv.css("width", "210px");
newTextBoxDiv.css("margin-left", "8px");
newTextBoxDiv.css("margin-bottom", "6px");
newTextBoxDiv.css("border-radius", "5px");
newTextBoxDiv.appendTo("#cardarea").insertAfter('#cardtitle');
button.appendTo("#cardarea").insertAfter(newTextBoxDiv);
button.css("margin-left", "8px");
button.css("height", "30px");
button.css("width", "55px");
button.css("margin-bottom", "6px");
button.addClass("btn btn-success");
button.text("Add");
button.css("font-weight", "bold");
button.appendTo("#cardarea").insertAfter(" <span class='glyphicon glyphicon - remove '</span>");
// Increase the value of counter
counter++;
}
else
{
alert("Please enter the data into the previous text area");
}
}
// Global variable so you can check length of previous textarea
var counter =0;
function addcard() {
if(counter>0){
// Checkfor previous textarea
var oldValue=$('#TextBoxDiv'+counter).val();
//Check for null or empty
if(!oldValue){
return;
}
}
var newTextBoxDiv = $(document.createElement('textarea')) .attr("id", 'TextBoxDiv' + counter); var button = $(document.createElement('button')); newTextBoxDiv.css( "margin-top","6px"); newTextBoxDiv.css("width","210px"); newTextBoxDiv.css( "margin-left","8px"); newTextBoxDiv.css( "margin-bottom","6px"); newTextBoxDiv.css( "border-radius","5px"); newTextBoxDiv.appendTo("#cardarea").insertAfter('#cardtitle'); button.appendTo("#cardarea").insertAfter(newTextBoxDiv); button.css("margin-left","8px"); button.css("height","30px"); button.css("width","55px"); button.css( "margin-bottom","6px"); button.addClass("btn btn-s`enter code here`uccess"); button.text("Add"); button.css("font-weight","bold"); //button.appendTo("#cardarea").insertAfter(" <span class='glyphicon glyphicon-remove '</span>");
counter++;
}
在这里,当addcard功能被调用时,它的第一个检查函数是第一次调用,然后无需检查以前的文本区域并添加新的文本区域,否则它将检查以前的文本区域是否为空或null,如果它随后退出函数,否则添加neww