2013-09-15 2 views
0

Я пытаюсь отключить действие формы в этом скрипте. Может кто-то, пожалуйста, помогите мне отключить руду удалить форму «действие»? Я использую сценарий формы для загрузки изображения, но при отправке формы вызывается действие, установленное в этом скрипте.удалить javascript form.setAttribute action

Может ли кто-нибудь угодить советам?

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; 
    } 

ответ

0

Хук функции в onsubmit формы и return false; в конце - это отменит стандартная отправки формы.

+0

спасибо. можете ли вы дать мне аксель? –

+0

На самом деле я мог ошибаться, я никогда не делал загрузку через iframe ... –

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

Будет также обойти фактический процесс формы представления, согласно jQuery .submit() documentation:

Теперь, когда форма была отправлена, сообщение предупреждается. Это происходит до фактического представления, поэтому мы можем отменить действие отправки на , вызвав .preventDefault() на объект события или вернув false из нашего обработчика.

Смежные вопросы