我有这个HTML表单,我需要在提交之前进行一些处理:
<form action="http://appid.appspot.com/api/foo" id="contact-form" method="post"
name="contact-form">
<fieldset>
<label><input name="email" onblur=
"if(this.value=='') this.value='Email'" onfocus=
"if(this.value =='Email' ) this.value=''" value="Email"></label>
<label><input name="subject" onblur=
"if(this.value=='') this.value='Subject'" onfocus=
"if(this.value =='Subject' ) this.value=''" value="Subject"></label>
<textarea name="message" onblur=
"if(this.value=='') this.value='Message'" onfocus=
"if(this.value =='Message' ) this.value=''">
Message
</textarea>
<div class="buttons">
<a href="#" onclick=
"document.getElementById('contact-form').reset()">Clear</a>
<a href="#" onclick=
"document.getElementById('contact-form').submit()">Send</a>
</div>
</fieldset>
</form>
基本上,我需要做的是:
单击提交按钮时,将出现一个弹出窗口,表明该消息已提交(通过检查服务器响应),
我需要复制特定表单输入的值,比如输入元素的值。然后将电子邮件添加到实际消息中,以便“消息”形式为例如"Email: x@dot.com Message: Hello world"
&lt; - 这将是之前名称=“消息”的输入元素的值将表单字段发送到api
更新
在我的问题中,我的意思是我想将这个基于HTML的基于HTML格式的表格迁移到Ajax调用中,如果这样会更好,那么我可以很容易地实现上面概述的目标。
答案 0 :(得分:1)
您想使用表单onsubmit
。
我改变了你的html(尤其是内联javascript)(为了清晰起见):
<form action="http://appid.appspot.com/api/foo" id="contact-form" method="post"
name="contact-form" onsubmit="return doStuff() ? true:false;">
<fieldset>
<input name="email" value="Email"
onblur="if(this.value===''){this.value=this.defaultValue}"
onfocus="if(this.value===this.defaultValue){this.value=''}" > <br>
<input name="subject" value="Subject"
onblur="if(this.value===''){this.value=this.defaultValue}"
onfocus="if(this.value===this.defaultValue){this.value=''}" > <br>
<textarea name="message"
onblur="if(this.value===''){this.value=this.defaultValue}"
onfocus="if(this.value===this.defaultValue){this.value=''}"
>Message</textarea>
<div class="buttons">
<a href="#" onclick=
"document.getElementById('contact-form').reset()">Clear</a>
<a href="#" onclick=
"if(doStuff()){document.getElementById('contact-form').submit();}">Send</a>
</div>
</fieldset>
</form>
正如您所看到的那样,输入元素上的自动填充/自动清除现在有点重复,因此您可以将其分解为单独的通用函数。
这是在表单实际提交之前运行的javascript函数:
function doStuff(){
var eml=document.getElementsByName('email')[0].value;
msg=document.getElementsByName('message')[0];
msg.value = 'Email: ' + eml + ' Message: ' + msg.value;
alert ('message has been submitted');
return true;
}
如果其他域使用会话cookie和/或检查文档引荐来源,那么执行此跨域可能会变得棘手。
更新:我看到你更新了你的问题,现在想检查并在你的留言中显示服务器响应?