如何使用我的代码在变量中创建一个函数

时间:2014-07-15 13:39:08

标签: javascript jquery events onclick

我有一个按钮:

<input onclick="if (!PreSaveItem()) return false;WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$m$g_1b663413_07f2_4335_90bd_e843be587b73$ctl00$toolBarTbl$RightRptControls$ctl00$ctl00$diidIOSaveItem", "", true, "", "", false, true))" type="button" target="_self" jQuery1110039212041699899153="167" value="Save"/>

当我在表单上有错误时,我删除attr onclick ....所以它不会保存页面... 当我没有错误时,我将attr onclick替换为默认值... 但是,当我这样做时,onclick功能不会执行.... 我可以在变量中使用我的代码声明一个函数吗? 像这样:

var onClickBtn = $( 'input' ).attr( 'onclick' );
function myFunc = onClickBtn;
myFunc();

2 个答案:

答案 0 :(得分:2)

根本不使用onclick属性。更好的是在代码中定义函数,然后使用jQuery附加事件处理程序:

function onClickBtn () {
    // ...
}

$('input').on('click', onClickBtn);

onClickBtn();

答案 1 :(得分:1)

你几乎可以做到这一点:

var onClickBtn = $( 'input' ).attr( 'onclick' );
var myFunc = new Function(onClickBtn);
myFunc();

但这里做起来更简单

var myFunc = $( 'input' )[0].onclick;
myFunc();

不同之处在于,在第二种情况下,您获得onclick(这是一个函数)的值,而不是获取attr返回的字符串。

这回答了被问到的问题。但是从元素中获取事件处理程序来执行它是一种不好的做法,这很尴尬。你真的应该改变你对问题的处理方法(目前还不清楚)。