我想获得在模态中动态创建的<input type="text">
的值,并将其放入变量"newcomment"中。这就是我输入的方式:
var newcomment;
var p = $("<p>");
p.append("Some text");
p.append("</p>");
p.append("<input type='text'id='comment_text' value='Comment'"+"onblur=newcomment=$('#comment_text').val()"+" onfocus=if(this.value==this.defaultValue)this.value=''>"+"</input>");
$("div.modal-body").append(p);
问题是,当我在模态中的文本框中写下类似"ok"的内容时,在我从文本框中集中注意力之后:newcomment似乎没有更新为"ok",并且仍然具有默认的"Comment"值。
1st:您需要使用newcomment=this.value
而不是newcomment=$('#comment_text').val()
第二:无需在输入的html代码中添加+
符号,而无需通过将变量放入来连接字符串
var newcomment;
var p = $("<p>");
p.append("Some text");
p.append("</p>");
p.append("<input type='text' id='comment_text' value='Comment' onblur='newcomment=this.value; alert(newcomment);' onfocus=if(this.value==this.defaultValue)this.value='' />");
$("body").append(p);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
这里不是真正的答案,但可能会帮助您找到问题的根源。
JS:
var newComment, defaultValue;
function doOnBlur(){
newComment = $('#comment_text').val()
}
function doOnFocus(){
if($('#comment_text').val() == defaultValue){
$('#comment_text').val('')
}
}
HTML:
<input type='text' id='comment_text' placeholder='Comment' onblur='doOnBlur()' onfocus='doOnFocus()' />
<!-- inputs dont have a close tag, also should use placeholder for temporary text -->
从这里,您可以在调试器中设置断点,并查看代码的错误位置。您还可以更容易地修改函数,而不是在HTML 中编写执行代码