我正在使用动态文本框。当有人点击"Add Option"
时,将动态添加文本框。当点击"Remove"
时,文本框将被动态删除。它的所有代码都适用于所有浏览器,但{7}}函数在IE 7中不起作用
请帮我解决这个问题
这是javascript代码
"Remove"
HTML代码
function addFormField()
{
var optionId = $("#optionId").val();
$("#pollOption").append("<p id='row" + optionId + "'><label for='txt" + optionId + "'>Option : <input type='text' size='20' name='option_"+optionId+"' id='option_"+optionId+"' name='option_"+optionId+"' class='text_field pollOption' validate='required:true' \/> <a href='#' onclick='removeFormField(\"#row" + optionId + "\"); return false;'>Remove<\/a><\/br><\/p>");
optionId = (parseInt(optionId) + 2) - 1;
$("#optionId").val(optionId);
}
function removeFormField(optionId)
{
$(optionId).remove();
optionId = (parseInt(optionId) + 1) - 2;
}
$.validator.setDefaults(
{
errorClass:"fontColorRed",
submitHandler: function()
{
setPoll();
return false;
}
});
答案 0 :(得分:1)
我不确定,但您的问题可能来自您附加到#pollOption
的无效HTML代码。我指的是你打开但永远不会关闭的<label>
元素。可能还有其他一些我没看到的东西。
这里的根本问题是我没有看到这些。我没有看到它们,因为您的代码几乎不可读,因此容易出现各种错误。 (在你的问题的评论部分也很明显,人们谈论“哦,我错过了......”)。
我不想听起来很卑鄙,但你的代码闻起来很香。 (这不是令人反感的:link)。
window.optionId = 2;
window.addFormField = function() {
optionId += 1;
var thisOption = $('<p>', {
'id': 'row' + optionId
}).append(
$('<label>').attr({
'for': 'txt' + optionId
}).html('Option : '),
$('<input>').attr({
'type': 'text',
'size': 20,
'name': 'option_' + optionId,
'class': 'text_field pollOption',
'validate': 'required:true'
}),
$('<a>').attr({
'href': '#'
}).html('Remove').click(function() {
thisOption.remove();
})
).appendTo('#pollOption');
};
$.validator.setDefaults(
{
errorClass:"fontColorRed",
submitHandler: function()
{
setPoll();
return false;
}
});
我重构了你的addFormField
函数:
optionId
现在是一个Number
变量,您可以简单地递增(不进行任何解析)。这个重构的代码肯定仍然闻起来,因为封装问题(全局变量无处不在!)和其他问题,但我认为它更具可读性和更强大。
答案 1 :(得分:0)
我没有理解你代码中的几个部分。但我建议,如果你在IE中删除元素时遇到问题,试一试。
并且始终可以选择将该div的innerHTML设置为“”(空字符串)。我知道这不好,但最后一件事可以尝试。