如何通过在OnClientClick事件上使用评估参数调用JavaScript函数



我在将参数传递给客户端事件的问题上有问题。

每当我通过eval参数,时,即使我在OnClientClick代码中写下"return false;",也有一个postback

OnClientClick='<%# "toggleContactDetails("+Eval("ItemId")+"); return false;" %>'

我尝试了不同的事情,包括我在类似问题中发现的一些解决方案。

我也尝试过:

OnClientClick='<%# string.Format("toggleContactDetails({0});return false;", Eval("ItemId"))%>'

或玩引号;没有什么可用。

我知道该功能甚至都没有运行,因为我为测试而写了:

function toggleContactDetails(itemId) {
    confirm(itemId);
}

在JavaScript文件中,没有出现消息。

有什么建议?

您在这个示例中有问题:

OnClientClick='<%# "toggleContactDetails("+Eval("ItemId")+"); return false;" %>'

问题是将其渲染到这样的浏览器:

onclick="toggleContactDetails(Item Name 1); return false;"

这是损坏的javascriptItem Name 1周围缺少引号),因此,当您单击按钮时,javascript无法正确运行,这意味着不运行return false;。反过来,这意味着postback将被触发。为了使其工作,您必须渲染正确的javascript

OnClientClick='<%# "toggleContactDetails("" + Eval("ItemId") + ""); return false;" %>'

只有相关区别是"在几个地方。

您必须从JavaScript函数返回值。

OnClientClick='<%# "return toggleContactDetails("+ Eval("ItemId")+ ");" %>'

javaScript:

<script type="text/javascript">
    function toggleContactDetails(itemId) {
        return confirm(itemId);
    }
</script>

我找到了这个技巧

OnClientClick='<%# JS("alert""" + Eval("item","")+""") %>'

然后在CodeBehind中:

public static string JS(jsname)
{
    return string.Format("{0}", js);
}

最新更新