即使html将其显示为正确,Javascript函数也会被发送错误的值

时间:2012-01-24 19:45:00

标签: c# javascript jquery asp.net

我有两个javascript函数,insertAddedSup和removeAdded。当我从表中检索值并使用此信息填充控件时,onclick事件会插入用户并且“删除”按钮正常工作。当我使用LDAP搜索用户,并且我点击用户时,所有的html都是正确的(显示正确的参数被发送到remove函数 - 就像SQL结果一样),但是当我点击删除按钮时,函数中使用的参数值与html中显示的值不同。我不认识任何地方的价值......它似乎几乎是随机的,尽管它总是相同的价值。不知道该怎么办。有谁知道可能是什么问题?

以下是功能:

function insertAddedSup(uidSup, fullnameSup) {
    var fullnameSup = fullnameSup.toLowerCase();
    var currentContentSup = '<div id="y_' + uidSup + '" class="selectedDataBox" style="overflow:hidden;"><span style="text-transform:capitalize; float:left">' + fullnameSup + '</span><input type="hidden" name="EmpID" id="personAddedSup_' + uidSup + '" value="' + uidSup + '"><input type="button" name="removeAdded_' + uidSup + '" id="removeAdded_' + uidSup + '" value="Remove" onclick="alert(' + uidSup +');removeAdded(' + uidSup + ');" style="font-size:0.7em; float:right; width:60px;"></div>';
    $('#addedPerson').html(currentContentSup);
    alert($('#addedPerson').html());
    $('#addedPerson').show();
    $('#MainContent_searchContent_btnSubmitEmployee').attr('disabled', false);
}

function removeAdded(uidSup) { // hide the div of the person added
    var divID = "#y_" + uidSup;
    alert($('#addedPerson').html());
    $(divID).hide();
    $(divID).remove();
    if ($('#addedPeople').html() == '') {
        $('#addedPeople').hide();
    }
    $('#MainContent_searchContent_btnSubmitEmployee').attr('disabled', true);
}

我添加了一些警告,以便我可以看到实际发送的内容,html中的内容等。

修改: HTML

<div id="y_0730337" class="selectedDataBox" style="overflow:hidden;">
    <span style="text-transform:capitalize; float:left"></span>
    <input name="EmpID" id="personAddedSup_0730337" value="0730337" type="hidden">
    <input name="removeAdded_0730337" id="removeAdded_0730337" value="Remove" onclick="alert(0730337);removeAdded(0730337);" style="font-size:0.7em; float:right; width:60px;" type="button">
</div>

如果数字不以0开头,它似乎也可以正常工作。是否有某些方法可以确保将该值视为字符串?

1 个答案:

答案 0 :(得分:3)

在你的按钮上点击:

onclick="alert(0730337);removeAdded(0730337);"

这些被视为数字而不是字符串,因为参数周围没有引号。如果一个数字以0开头,那么数字将真正从下一个非零数字开始(在这种情况下为7),使得值传递730337(老实说,我不知道为什么你看到的实际值通过的是如此巨大的不同虽然如果有人对此有解释,我有兴趣听听。

你真正想要的是:

onclick="alert('0730337');removeAdded('0730337');"

你说那些不以0作品开头的数字让我相信这就是你遇到这个问题的原因。