如何在使用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&eacute;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&eacute;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&eacute;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;