[英]why doesn't this jQuery code work in IE?
使用以下代碼,因此當在窗體的輸入字段中聚焦時單擊“輸入”時,它將禁用標准的提交按鈕功能。 而是javascript構建一個新表單,然后將發布請求發送到另一個頁面。 我正在使用它,以便可以實現“表單中的表單”功能。 輸入字段有其自己的提交按鈕,對此我有類似的代碼來執行發布。
在Firefox中,這很完美。 在IE中,按Enter根本不起作用。 這是代碼:
//event handler for input field within standard form
$('#inputfield').bind('keypress', function(e) {
var code = e.keyCode || e.which;
if(code==13){
//suppress default submit functionality
$('form').submit(function () {
return false;
});
//...assemble some data here...
var url_string = "...";
var $form = $("<form method='POST'>").attr("action", url_string);
$("<input type='hidden' name='body'>").attr("value",body).appendTo($form);
$("<input type='hidden' name='title'>").attr("value",title).appendTo($form);
//...create more form elements here...
$form.appendTo("body");
$form.submit();
}
});
有什么想法為什么這在IE中不起作用(我在IE 6,7和8中嘗試過)?
更新:只是為了解決這個問題:在Firefox中, $form.submit();
末尾的一行導致jquery生成的表單提交和頁面重定向。 在IE中什么也沒有發生。 按鍵確實會在IE 中觸發,只是表單似乎沒有提交。
如果您嘗試使用普通的DOM Submit方法而不是jQuery會發生什么?
// instead of:
// $form.submit();
// try this:
$form[0].submit();
即給我一個JavaScript錯誤:0為空或不是對象。
好的,這表明您的jQuery對象為空。 可能是appendTo正在執行奇怪的操作...請嘗試以下操作:
$form = $form.appendTo("body");
$form.submit();
如果不起作用,請輸入以下調試行:
alert($form.length);
$form.appendTo("body");
alert($form.length);
$form.submit();
好的,我現在知道了:
這是您生成導致問題的表格的那一行。 更改為此:
var $form = $("<form></form>").attr({"action" : url_string, "method" : "POST"});
我不確定你應該做的,所以這可能是jQuery中的錯誤。
IE DOM不同,並且捕獲事件與FF或Chrome不同。
var key;
if(window.event)
key = window.event.keyCode; //IE
else
key = e.which; //firefox
if(key == 13)
do a thing
嘗試在keypress事件處理函數的末尾返回false。 這表示瀏覽器不允許在您的自定義功能之后出現“正常”結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.