在我的情况下,防止默认不起作用

时间:2015-06-27 09:40:41

标签: jquery ajax

我有这个表格,用于发布js文件如下的消息。我想阻止表单的默认操作并使用ajax ::::

提交

function iFrameOn()
{
	richTextField.document.designMode = 'On';
}
function iBold()
{
	richTextField.document.execCommand('bold',false,null);
	
}
function iItalic()
{
	richTextField.document.execCommand('italic',false,null);
	
}

function iLink()
{
	var linkURL = prompt('Enter the URL for this link:','http://');
	richTextField.document.execCommand('CreateLink',false,linkURL);
	
}

	
function submit_form(){
		var theForm = document.getElementById('myform');
		theForm.elements["message"].value = window.frames['richTextField'].document.body.innerHTML;
  
		$('#myform').submit();
  
		$('#myform').submit(function(e) {
			e.preventDefault();
			var formData = new FormData(this);
			console.log($('#myform').attr('action'));
				$.ajax({
				type:'POST',
				url: $(this).attr('action'),
				data:formData,
				cache:false,
				contentType: false,
				processData: false,
				success:function(data){
					console.log(data);
				},
				error: function(data){
					console.log("error");
					console.log(data);
				}
			});
		});
	}
	else
		alert("Your message is empty");
}
**THE FORM IS**
<form method="POST" action="dmessage3.php" name="myform" id="myform" class="form1" > 	
<textarea name="message" id="myTextArea" cols="100" rows="14" style="display:none;"></textarea>
<iframe name="richTextField" id="richTextField"  ></iframe>

<div id="toolbar" class="toolbar">
<input type="button" onClick="iBold()" value="B" class="tools" >
<input type="button" onClick="iItalic()" value="I" class="tools">
<input type="button" onClick="iLink()" value="Link" class="tools">
</div>

<input type="hidden" name="id1" value="1">
<input type="hidden" name="id2" value="2">
<input name="myBtn" type="button" value="Submit data" onClick="javascript:submit_form();">
</form>	

但表单不是使用ajax发布的

1 个答案:

答案 0 :(得分:1)

如果您想使用e.preventDefault(),则需要在jQuery .on()类型的调用中使用它。不在html的onClick上。或者,如果您要在html中使用onclick,那么您需要在该函数的末尾添加return false;Here是一个链接,如果您想了解更多相关信息。

这是一个适合您的版本(取决于您使用的jQuery版本)。我不确定else {}函数末尾的submit_form()子句是什么意思,但是我将其删除了(else-clause需要if-clause前面的function submit_form(){ var theForm = document.getElementById('myform'); theForm.elements["message"].value = window.frames['richTextField'].document.body.innerHTML; var formData = new FormData(this); console.log($('#myform').attr('action')); $.ajax({ type:'POST', url: $(this).attr('action'), data:formData, cache:false, contentType: false, processData: false, success:function(data){ console.log(data); }, error: function(data){ console.log("error"); console.log(data); } }); } $('#myBtn').on('click', function(e) { e.preventDefault(); submit_form(); }); 才有效)。

<input name="myBtn" type="button" value="Submit data" />

使用此代码,只需从html-form按钮中删除onClick属性,如下所示:

/

并且还要确保所有需要结束标记的html标记都有一个结束标记,或者在标记末尾添加<property as="xs:string" name="oxf.fr.detail.process.workflow-send.*.*" value=' require-uploads then validate-all then save(draft="true") then send("oxf.fr.detail.send.success")' /> <property as="xs:anyURI" name="oxf.fr.detail.send.success.uri.*.*" value="[Important WS URL]"/> <!-- HTTP method to use to navigate to the success page --> <property as="xs:string" name="oxf.fr.detail.send.success.method.*.*" value="POST" replace="all"/> ,如上面一行,以使其成为自动结束标记