我想動態地更改任何實例,其中'form.submit();'在$('form')中的某些select元素的onchange函數中出現。以便表單本身觸發提交事件。動態更新onchange函數問題
這裏有這樣一個選擇列表中的一個例子,其中的onchange功能需要更新:
<td class="form-field selectinput" align="left" valign="left" style="width: 90px;" title="Select status type">
<select class="filterlist" name="cStatus" tabindex="5" style="width: 90px;" onchange="form.submit();">
<option value="" title="[All]">[All]</option>
<option value="A" title="Authorised">Authorised</option>
<option value="C" selected="" title="Cancelled">Cancelled</option>
<option value="U" title="Declined">Declined</option>
<option value="R" title="Requested">Requested</option>
<option value="T" title="Taken">Taken</option>
<option value="W" title="Withdrawn">Withdrawn</option>
</select>
</td>
我在頁面中插入的標頭部分以下嘗試和更新的功能:
$(document).ready(function(){
$(function() {
$('select').each(function() {
var txt = this.onchange ;
alert(txt);
var patt=/form.submit()/g;
var result=patt.test(txt);
if (result) {
var txt = txt.replace('form.submit()',"");
this.onchange = eval(txt);
}
});
});
});
警報消息出現了:
function onchange(event) { form.submit(); } Blockquote
,然後控制檯日誌顯示以下錯誤:
Uncaught TypeError: Object function onchange(event) { form.submit(); } has no method 'replace'
其實我可以得到它具有以下工作:
this.onchange = function() { $('form').submit(); }
但有些情況下,onchange帶有form.submit();例如:
form.submit();form.iYear.disabled=true;form.cGroupItem.disabled=true;
所以我不想替換整個函數本身,而是刪除'form.submit();'並用「$(」形式「)替換它;,所以上述接下來出現提交()。」:
$('form').submit();form.iYear.disabled=true;form.cGroupItem.disabled=true;
我已經()在不同的地方,但隨時使用的toString()和eval嘗試我嘗試編輯字符串txt,我不斷收到對象沒有方法錯誤。
任何想法??
爲了更好,更快的答案,你應該通過單擊編輯鏈接上添加了對應於您正在使用(JavaScript的?)語言標籤低於你的問題。 – assylias
onchange不是一個字符串;這是一個函數,這就是爲什麼你會得到「......沒有方法」替換錯誤。當您使用警報時,它會被強制轉換爲字符串。 – Steve
史蒂夫,有沒有辦法,該函數可以作爲一個字符串操縱?它可以強制成一個字符串,而不是使用警報? –