如何在OnClientClick事件上调用带有Eval参数的javascript函数?

时间:2016-12-29 22:46:43

标签: javascript asp.net

将参数传递给客户端事件OnClientClicking时遇到问题。

每当我传递一个Eval参数时,由于某种原因会有回发,即使我在my_function代码中写了parameters

"return false;"

我尝试了不同的东西,包括我在类似问题中找到的一些解决方案。

我也试过这个:

OnClientClick

或使用引号;什么都行不通。

我知道函数甚至没有运行,因为我写了测试:

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

在javascript文件中,不会显示任何消息。

请问任何建议?

2 个答案:

答案 0 :(得分:2)

您在问题中有这个样本:

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;" %>'

只有相关的差异是\"在几个地方。

答案 1 :(得分:1)

您必须从javascript函数返回一个值。

import os
import shutil
import time
import sys

def update_progress_bar():
  print '\b.',
  sys.stdout.flush()

print 'Starting ',
sys.stdout.flush()

path = '//server/users/'
keyword = 'monthly report'

for root, dirs, files in os.walk(path):
  for name in files:
     if keyword in name.lower():
        time.sleep(0)
        update_progress_bar()

print ' Done!'

使用Javascript:

$form = $this->createForm(ReviewType::class, $review);