[英]Modify onclick function with jQuery
我有一個按鈕,其中包含一個onclick事件,該事件是在.NET后端設置的。 旁邊是一個復選框
<button class="img_button" onclick="if(buttonLoader(this)){WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions('uxBtnRelease', '', true, '', 'somepage.aspx?oupid=5&fp=true', false, true))} return false;" type="button">Release</button>
<input type="checkbox" checked="checked" id="myCheckbox">
單擊復選框后,需要在按鈕的onclick函數內的URL中更改查詢字符串的值。
到目前為止,我已經有了這個,這個想法是正確的,但是運行它時我總是收到錯誤消息:“ Uncaught SyntaxError:Unexpected token ILLEGAL”
var defaultReleaseOnClick=null;
$("#myCheckbox").click(function(){
var $releaseBtn = $(".img_button");
if(defaultReleaseOnClick==null) defaultReleaseOnClick=$releaseBtn.attr("onclick");
var newOnClickString = defaultReleaseOnClick.toString().replace(/&fp=[a-z]+'/i,"&fp="+this.checked);
$releaseBtn.removeAttr("onclick").click(eval(newOnClickString));
});
我知道將函數轉換為字符串,進行替換,然后嘗試將其轉換回函數似乎有點kind,但是我不知道有其他方法可以做到。
有任何想法嗎?
我在這里設置了一個演示: http : //jsbin.com/asiwu4/edit
為什么不使用data- *屬性? 例如:
<button ... onclick="doStuff(this);" data-url="something.aspx"></button>
現在,在doStuff()
函數(或onclick屬性中包含的所有內容)中,您將從data-url屬性中讀取,並在checkbox.click事件中進行相應的更改。 這樣,您就不必處理使用正則表達式修改JavaScript代碼的問題,這是我真正不推薦給任何人的東西。
從jQuery 1.4.3開始,您甚至不必處理jQuery.attr即可讀取data- *屬性,但是您可以使用jQuery.data來自動為您檢索數據(您也可以這樣設置) 。
一個簡單的例子:
<input type="submit" id="button" data-url="google.com">
<input type="checkbox" id="checkbox">
$('#button').click(function() {
alert($(this).data('url'));
});
$('#checkbox').click(function() {
$('#button').data('url', 'bing.com');
});
另一個建議: 使用jQuery閱讀Unobtrusive JavaScript ,這項技術使我的Web開發人員的生活更加輕松:)
您不能使用新的fp值更新隱藏的表單元素嗎?
<input type='hidden' name='fp' value='whatever' />
這樣,您發布表單的代碼可能會更加通用。
我實際上找到了一個更簡單的解決方案。 我將在頁面上渲染兩個不同的按鈕,每個按鈕中都包含所需的腳本。 復選框的狀態將僅確定哪個是可見的要單擊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.