如何在使用javascript发送表单之前更改表单并获取变量?
我想从我的表单中获取一些字段,修改它们,然后发送表单,但我不知道如何做 我有一张这样的表格:如何在使用javascript发送表单之前更改表单并获取变量?,javascript,html,Javascript,Html,我想从我的表单中获取一些字段,修改它们,然后发送表单,但我不知道如何做 我有一张这样的表格: <form action="http://myurl.com" method="GET"> <input type="text" name="date"> <input type="name" name="name"> <input type="submit" value="Submit"> </form> var d
<form action="http://myurl.com" method="GET">
<input type="text" name="date">
<input type="name" name="name">
<input type="submit" value="Submit">
</form>
var date = new Date($('form input[name="date"]').val());
var day = date.getDate();
var month = date.getMonth();
var year = date.getFullYear();
我尝试在日期上使用getInnerHTML
来获取它的子字符串。然后我尝试在名称旁边解析它以“生成”url
(编辑:但它不起作用)
一个Url的示例,其工作原理如下
Edit2:无法使用JQuery
<script type="text/javascript">
//Get the field "re" and put it the converted date @j@m@a@j@m@a
function dateParser(){
var champs = document.getElementById('resa_type_resa');
var dateDebut = document.getElementById('resa_date_debut_resa').getInnerHTML;
var dateFin = document.getElementById('resa_date_fin_resa').getInnerHTML;
var jour = dateDebut.value.substring(0,1);
var mois = dateDebut.value.substring(4,5);
var annee = dateDebut.value.substring(7,10);
var jourFin = dateFin.value.substring(0,1);
var moisFin = dateFin.value.substring(4,5);
var anneeFin = dateFin.value.substring(7,10);
champs.setAttribute('value', champs.getAttribute('value')+"@"+jour+"@"+mois+"@"+annee+"@"+jourFin+"@"+moisFin+"@"+anneeFin);
alert(champs);
}
</script>
<form id="reservation_crique" action="recup.php" method="GET" target="_blank" onSubmit="dateParser()">
<p style="text-align: center;"><strong><strong><img src="images/stories/reservez.png" alt="" /></strong></strong></p>
<p><strong>Location ouverte<br /></strong>du 15/03 au 15/11</p>
<p><span class="form-label">Type de réservation :</span>
<select id="resa_type_resa" name="re" style="width: 143px;">
<option value="E">Emplacement</option>
<option value="L">Location</option>
</select>
</p>
<span class="form-label">Date de début : </span>
<input id="resa_date_debut_resa" name="date_debut" type="text" /><br /><span class="form-label">
Date de fin :
</span>
<input id="resa_date_fin_resa" name="date_fin" type="text" />
<input id="resa_re" type="hidden" name="re" />
<input id="lg" type="hidden" name="lg" value="fr" />
<input id="nc" type="hidden" name="nc" value="2865" />
<input id="mo" type="hidden" name="mo" value="1129" />
<input id="site_frame" type="hidden" name="site_frame" value="1" />
<input id="bloc_recherche" type="hidden" name="bloc_recherche" value="1" />
<br />
<input type="submit" value="Envoyer">
<!--<div style="text-align: center;"><a href="#" id="resa_button_validate">Voir les réservations</a></div>-->
</form>
//获取字段“re”,并将其置于转换日期@j@m@a@j@m@a
函数dateParser(){
var champs=document.getElementById('resa_type_resa');
var datedunch=document.getElementById('resa_date_dunch_resa').getInnerHTML;
var dateFin=document.getElementById('resa\u date\u fin\u resa').getInnerHTML;
var jour=DateFirst.value.substring(0,1);
var mois=DateFirst.value.substring(4,5);
var annee=DateFirst.value.substring(7,10);
var jourFin=dateFin.value.substring(0,1);
var moisFin=dateFin.value.substring(4,5);
var anneeFin=dateFin.value.substring(7,10);
champs.setAttribute('value',champs.getAttribute('value')+“@”+jour+“@”+mois+“@”+annee+“@”+jourFin+“@”+moisFin+“@”+anneeFin);
警觉(冠军);
}
位置ouverte
du 15/03 au 15/11
类型de ré;注意:
炮位
位置
日期和日期;但是:
财务日期:
如果需要从用户输入中生成日、月和年,为什么不使用他们的数据实例化一个新的日期对象,然后使用日期函数获取所需的信息呢
大概是这样的:
<form action="http://myurl.com" method="GET">
<input type="text" name="date">
<input type="name" name="name">
<input type="submit" value="Submit">
</form>
var date = new Date($('form input[name="date"]').val());
var day = date.getDate();
var month = date.getMonth();
var year = date.getFullYear();
您可以通过以下方式获得日期值,并根据输入的日期格式将日期、月份和年份分开
document.getElementsByName('date')[0].value
您还可以考虑使用正则表达式(RegEx)来解析日期元素。请参见下面的拥抱示例:
var url_年、url_月、url_日=”“;
var base_url=”http://www.example.com";
函数getElement(id){
(id的类型!=“字符串”)
return(type of id!=“string”)?id:document.getElementById?document.getElementById(id):document.all?document.all(id):document.layers[id];
}
函数验证(dateval){
var myregexp=“”;
var match=null;
myregexp=/([\d]{4,4})-([\d]{1,2})-([\d]{1,2})/i;//YYYY-MM-DD
match=myregexp.exec(dateval);
如果(匹配!=null){
url_year=匹配[1];
url_month=((匹配[2]。长度<2)?“0”:“”)+匹配[2];
url_day=((匹配[3]。长度<2)?“0”:“”)+匹配[3];
返回true;
}
myregexp=/([\d]{1,2})。([\d]{1,2})。([\d]{4,4})/i;//DD.MM.YYYY
match=myregexp.exec(dateval);
如果(匹配!=null){
url_year=匹配[3];
url_month=((匹配[2]。长度<2)?“0”:“”)+匹配[2];
url_day=((匹配[1]。长度<2)?“0”:“”)+匹配[1];
返回true;
}
myregexp=/([\d]{1,2})。([\d]{1,2})。([\d]{4,4})/i;//MM/DD/yyyyy
match=myregexp.exec(dateval);
如果(匹配!=null){
url_year=匹配[3];
url_month=((匹配[1]。长度<2)?“0”:“”)+匹配[1];
url_day=((匹配[2]。长度<2)?“0”:“”)+匹配[2];
返回true;
}
警报(“日期格式无效\n所欠为:YYYY-MM-DD | DD.MM.YYYY | MM/DD/YYYY”);
返回false;
}
函数doSubmit(){
var f_name=getElement(“myForm_name”);
如果(f_名称的类型==“未定义”){
警报(“表格中无“名称”字段”);
返回false;
}否则{
v_name=f_name.value;
如果(v_name.length<1){
警报(“名称字段不得为空”);
返回false;
}
}
var f_date=getElement(“myForm_date”);
如果(f_日期的类型=“未定义”){
警报(“表格中无日期字段”);
返回false;
}否则{
v_date=f_date.value;
如果(v_日期长度<1){
警报(“日期字段不得为空”);
返回false;
}
}
如果(!valiDate(v_date))返回false;
var xpar=“name=”+escape(v_name)+“@”+url_day+“@”+url_month+“@”+url_year;
//window.location.href=base_url+“?”+xpar;
警报(“URL=“+base\u URL+”?“+xpar”);
返回true;
}
姓名:
日期:
jQuery是这里的一个选项吗?不,我不能使用它,它只能是纯javascript。你的问题表明根本没有研究工作。你有没有试过用谷歌搜索一下如何使用javascript获取字段值?我会把我的完整代码和真实的表单一起展示给你我已经做了什么。你的代码仍然只是一厢情愿。你认为为什么会有一个叫做getInnerHTML
?好吧,上面用jQuery代替了form-name.date.value;