c# - 即使 html 显示正确,Javascript 函数也会发送错误的值

标签 c# javascript jquery asp.net

我有两个javascript函数,insertAddedSup和removeAdded。当我从表中检索值并使用此信息填充控件时,onclick 事件会插入用户,并且“删除”按钮工作正常。当我使用 LDAP 搜索用户并单击该用户时,所有 html 都是正确的(显示发送到删除函数的正确参数 - 就像 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 开头,它似乎也可以正常工作。有什么方法可以确保该值被视为字符串吗?

最佳答案

在您的按钮中单击:

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

这些被视为数字而不是字符串,因为参数周围没有引号。如果一个数字以 0 开头,那么该数字实际上将从下一个非零数字(在本例中为 7)开始,从而使值传递为 730337(老实说,我不知道为什么您看到的实际传递值有如此大的不同) .我有兴趣听听其他人是否对此有解释)。

你真正想要的是:

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

您所说的不以 0 开头的数字让我相信这就是您遇到此问题的原因。

关于c# - 即使 html 显示正确,Javascript 函数也会发送错误的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8993064/

相关文章:

javascript - 在 Angular 中单击时复制 div

jquery - 使用按钮水平滚动 div

javascript - 如何过滤日期响应以仅显示今天日期的数据?

c# - 来自列表的 SqlBulkCopy<>

c# - Entity Framework 中循环引用的 WCF Datacontract 序列化问题

javascript - 停止传播不起作用

javascript - 用于时间线可视化的 SIMILE 时间线的替代方案?

javascript - jquery通过php echo实现多个id选择器

c# - 具有不同值类型的 List<T>

c# - 使用 XPATH 获取 xml 文件中匹配属性条件的 n 个节点