动态创建的元素和函数与onblur一起使用时运行不正常

时间:2016-11-23 07:24:03

标签: javascript jquery parameters

我正在尝试将一些参数传递给具有“onBlur”事件的函数,如下所示:

var str = "<tr><td>&nbsp;</td><td colspan='8'>";
            str += "<input onBlur='blurEdit("+sno+","+field+");' value='"+$.trim($('#'+elementId).text())+"' type='text' class='form-control' name='edit_"+field+"' id='edit_"+field+"'>"+
                    "<span id='msgEdit'></span></td></tr>";
            $(str).insertAfter($("#"+rowId));

但函数onBlur=blurEdit("+sno+",'"+field+"')不会接受第二个参数值及其,因为它用字符串值括起来。 如何在javascript创建的字符串中使用函数?

2 个答案:

答案 0 :(得分:1)

制作单独的变量

var fun="blurEdit("+sno+","+field+");";

然后在字符串

var str = "<tr><td>&nbsp;</td><td colspan='8'>";
 str += "<input onBlur='"+fun+"' value='"+$.trim($('#'+elementId).text())+"' type='text' class='form-control' name='edit_"+field+"' id='edit_"+field+"'>"+
                "<span id='msgEdit'></span></td></tr>";
        $(str).insertAfter($("#"+rowId));

试试这个。它应该适合你

答案 1 :(得分:1)

使用相同的语句onBlur=blurEdit("+sno+",'"+field+"');似乎对我有用。确保您在'之前和之后没有给出任何blurEdit,因为您已在问题中提供了$(document).ready(function() { $("#btn1").click(function(){ var field ="name"; var sno=1; var str="<input onBlur=blurEdit("+sno+",'"+field+"'); type='text'/>"; $(str).insertAfter($("#rowId")); }); }); var blurEdit = function(sno,field){ alert(field); }

&#13;
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="rowId"></div>
<button id="btn1">Append Text</button>
&#13;
@Controller
public class RouteController {
    @RequestMapping(value = "/{path:[^\\.]*}")
    public String redirect() {
        return "forward:/";
    }
}
&#13;
&#13;
&#13;