簡體   English   中英

為什么此jQuery代碼在IE中不起作用?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM