2011-09-29 72 views
0

我想插入一个函数调用来获取我的JavaScript onclick函数的参数。我想要做的是一样的东西:jsp with javascript parameter javascript javascript onclick

<input class="refreshbutton" 
     type="button" 
     id="searchUfficiPopup" 
     onClick="javascript:postColorbox('/DeliDete/searchUfficiPopupBySettoreId', **'&settoreIdKey=${javascript:getSettoriId()}'**, 'tabUfficiForm', 'initScriptUffici')" 
     value="<fmt:message key="navigation.searchUffici"/>" /> 

这样的Eclipse告诉我的功能javascript:getSettoriId()是不确定的。我在一个外部.js文件中定义了这个函数,在运行时用jQuery的.getScript加载,所以我不想将它插入到jsp中(无论如何,我试图将它插入到jsp中,但IDE仍然表示该函数未定义)。

功能postColorbox定义为:

function postColorbox(url, parameters, formName, initScript) 

getSettoriId()返回先前输入的形式元素的值,Settori,我需要执行受限制的查询功能(I需要获得有关所有乌菲齐实体到所选Settori实体)告诉本报

,我想请教各位高手:

  1. 我甚至可以使用JavaScript函数作为onclick JavaScript函数的参数?

  2. 如果我把这个函数在一个外部的.js文件中调用,那么jsp能够看到它并调用它吗?

谢谢大家的帮忙! Andrea

回答

0

删除您<input>onClick与jQuery的事件处理程序,而不是做:

$('#searchUfficiPopup').click(function() { 
    var settoriId = getSettoriId(); 

    postColorbox('/DeliDete/searchUfficiPopupBySettoreId', 
       '&settoreIdKey=' + settoriId, 
       'tabUfficiForm', 
       'initScriptUffici'); 

    return false; 
}); 
+0

谢谢你,我只是做了2分钟前在性能稍微不同的方式:功能searchUfficiPopupBySettori() { \t postColorbox( '/ DeliDete/searchUfficiPopupBySettoreId', '&settoreIdKey =' + getSettoriId(), 'tabUfficiForm', 'initScriptUffici' ); }并在onClick:onClick =“javascript:searchUfficiPopupBySettori()” – Andrea

+0

不要使用'onclick'。使用jQuery附加事件处理程序。即使你使用'onclick',你也不需要'javascript:'前缀(只有当你从'href'调用JavaScript函数时才需要)。 –

+0

正如你所说,我删除了各种“javascript:”。我在教程中看到了这一点,并认为这是必要的。你能解释为什么我应该使用jQuery处理程序而不是onClick?我不知道两者的区别。也许是onClick的交叉浏览器不当行为?再次感谢 – Andrea

0

从HTML元素中调用函数并不是首选方法。如果可以的话 - 只需为该元素分配一个id或class,然后在页面加载时使用javascript添加一个侦听器。

这样你就没有混合你的数据和操作。因为您的代码将位于js文件中,所以修改代码也更容易。

+0

谢谢你,你暗示我这样做的正确方法。 – Andrea