0

このスクリプトでフォーム アクションを無効にしようとしています。誰かがフォームの「アクション」変数を無効にするか削除するのを手伝ってくれますか? フォームのスクリプトを使用して画像をアップロードしていますが、フォームを送信すると、このスクリプトに設定されているアクションが呼び出されます。

誰かアドバイスをお願いできますか?

  function $m(theVar){
 return document.getElementById(theVar)
 }
  function remove(theVar){
  var theParent = theVar.parentNode;
  theParent.removeChild(theVar);
  }
  function addEvent(obj, evType, fn){
  if(obj.addEventListener)
    obj.addEventListener(evType, fn, true)
if(obj.attachEvent)
    obj.attachEvent("on"+evType, fn)
  }
  function removeEvent(obj, type, fn){
if(obj.detachEvent){
    obj.detachEvent('on'+type, fn);
}else{
    obj.removeEventListener(type, fn, false);
}
  }

   // browser detection
  function isWebKit(){
return RegExp(" AppleWebKit/").test(navigator.userAgent);
   }

   // send data
  function ajaxUpload(form){
var detectWebKit = isWebKit();
var get_url = 'upload.php';// php file
var div_id = 'upload_area';// div id where to show uploaded image
var show_loading = '<img src="img/loading.gif" />';// loading image
var html_error = '<img src="img/error.png" />';// error image

// create iframe
var sendForm = document.createElement("iframe");
sendForm.setAttribute("id","uploadform-temp");
sendForm.setAttribute("name","uploadform-temp");
sendForm.setAttribute("width","0");
sendForm.setAttribute("height","0");
sendForm.setAttribute("border","0");
sendForm.setAttribute("style","width: 0; height: 0; border: none;");

// add to document
form.parentNode.appendChild(sendForm);
window.frames['uploadform-temp'].name="uploadform-temp";


 // add event
  var doUpload = function(){
    removeEvent($m('uploadform-temp'),"load", doUpload);
    var cross = "javascript: ";
cross += "window.parent.$m('"+div_id+"').innerHTML =        document.body.innerHTML;   void(0);";
    $m(div_id).innerHTML = html_error;
    $m('uploadform-temp').src = cross;
    if(detectWebKit){
        remove($m('uploadform-temp'));
    }else{
        setTimeout(function(){ remove($m('uploadform-temp'))}, 250);
    }
   }
addEvent($m('uploadform-temp'),"load", doUpload);

  // form proprietes
form.setAttribute("target","uploadform-temp");
form.setAttribute("method","post");
  form.setAttribute("action",get_url);
form.setAttribute("enctype","multipart/form-data");
form.setAttribute("encoding","multipart/form-data");

// loading
if(show_loading.length > 0){
    $m(div_id).innerHTML = show_loading;
}
  // submit
form.submit();
  return true;
  }
4

2 に答える 2

0
form.submit(evt);
    evt.preventDefault();
}

jQueryの.submit()ドキュメントに従って、実際のフォーム送信プロセスもバイパスします:

フォームが送信されると、メッセージが警告されるようになりました。これは実際の送信の前に発生するため、イベント オブジェクトを呼び出す.preventDefault()か、ハンドラーから false を返すことで、送信アクションをキャンセルできます。

于 2013-09-15T00:57:03.123 に答える