获取<输入类型=“;文本“>它是在模态中动态创建的

Get the value of an <input type="text"> that was created dynamically inside a modal

本文关键字:模态 创建 动态 文本 输入 lt 类型 gt 获取      更新时间:2023-09-26

我想获得在模态中动态创建的<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 中编写执行代码