2012-02-05 5 views
0

submit()を使用してフォームを送信したいが、実際には匿名関数を使用しないでsubmit()を使用するとうまくいく。 (古い男のせいで、jQueryとgetElementsByTagNameのを混合して申し訳ありません)匿名関数を使用するとjquery submit()が機能しない

var uform = $('#createItem1'); 
if(uform[0]) { 
    // UI's first validation image extension before server-side 
    var _validFileExtensions = [".jpg", ".jpeg", ".gif", ".png"]; 
    var arrInputs = uform[0].getElementsByTagName("input"); 
    for (var i = 0; i < arrInputs.length; i++) { 
     var oInput = arrInputs[i]; 
     //Checks if image is of valid extension 
     if (oInput.type == "file"){ 
      var sFileName = oInput.value; 
      if (sFileName.length > 0) { 
       var blnValid = false; 
       for (var j = 0; j < _validFileExtensions.length; j++) { 
        var sCurExtension = _validFileExtensions[j]; 
        if (sFileName.substr(sFileName.length - sCurExtension.length, sCurExtension.length).toLowerCase() == sCurExtension.toLowerCase()) { 
         blnValid = true; 
         // this works fine 
         $('#createItem1').submit(); 
         break; 
        } 
       } 

       if (!blnValid) { 
        alert("Sorry, " + sFileName + " is invalid, allowed extensions are: " + _validFileExtensions.join(", ")); 
        $('a#linkStep1').trigger('click'); 
        return false; 
       } 
      } 
     } 
    } 
} 
return false; 

ここでも、できるだけ早く私は、現在を交換しようとして、このような無名関数は、それはこれが私のコードである

$('form').submit(function() { 
    alert("alert never shows up :("); 
}); 

を動作を停止しますこのようなものをsubmit()すると、動作が停止する

$('#createItem1').submit(function() { 
    alert("something"); 
}); 

何が問題なのでしょうか?

+0

$( '#createItem1')に切り替えてください。trigger( 'submit'); '代わりに – OptimusCrime

+0

ここで何を達成しようとしていますか?なぜ、匿名関数をサブミットトリガーに渡す必要がありますか?フォームが正常に送信されたら、匿名関数を呼び出すことをお勧めしますか?その場合は、ajaxリクエストが必要です。 – matdumsa

答えて

5

.submit() methodに関数(匿名またはその他)を渡すと、フォームが送信されたときに実行されるハンドラを定義しますが、実際にフォームが送信されることはありません。 .submit()にパラメータを渡さないと、が送信されます。

あなたはハンドラを定義し、あなたがこれを行うことができ、同時に提出したい場合は、次のパラメータを指定しないで

$('#createItem1').submit(function() { 
    alert("something"); 
}).submit(); 

.submit().trigger("submit")ためのショートカットです。

+0

あなたたちは岩!ありがとうございました! – lito

0

セレクタに有効なオブジェクトがないか、または返されたオブジェクトがフォームではないため、機能しません。

0

submitメソッドに無名関数を渡すと、フォームは送信されませんが、フォームの送信時に実行されるハンドラが添付されます。

投稿するにはformと言うだけです。任意のsubmitイベントハンドラを添付した場合

$('#createItem1').submit(); 

彼らは自動的にトリガされます。

関連する問題