Javascript 更改“选择”选项上的窗体操作和隐藏输入值
我想根据选择选项更改我的表单操作,下面的代码工作正常:Javascript 更改“选择”选项上的窗体操作和隐藏输入值,javascript,jquery,Javascript,Jquery,我想根据选择选项更改我的表单操作,下面的代码工作正常: function chgAction() { var form = document.form; console.log('chgAction()'); console.log(form.ddownOption.selectedIndex); switch (form.ddownOption.selectedIndex) { case 1: form.action = "http:
function chgAction() {
var form = document.form;
console.log('chgAction()');
console.log(form.ddownOption.selectedIndex);
switch (form.ddownOption.selectedIndex) {
case 1:
form.action = "http://myform/option1";
break;
case 2:
form.action = "http://myform/option2";
break;
}
}
但是,我还需要根据相同的选择更改隐藏字段中的值:
function chgAction() {
var form = document.form;
console.log('chgAction()');
console.log(form.ddownOption.selectedIndex);
switch (form.ddownOption.selectedIndex) {
case 1:
form.action = "http://myform/option1";
form.getElementById(option_dates).name = "option1_dates";
break;
case 2:
form.action = "http://myform/option2";
form.getElementById(option_dates).name = "option2_dates";
break;
}
}
以上这些都不行,我不知道该怎么做。我得到一个未找到的函数错误
HTML:
--请选择--
红外光谱
红外光谱
请提供帮助。问题在于隐藏元素: 1.在
表单上
我们不能使用getElementById()
需要使用文档
2.Id是变量,而不是字符串
function chgAction() {
var form = document.form;
console.log('chgAction()');
console.log(form.ddownOption.selectedIndex);
switch (form.ddownOption.selectedIndex) {
case 1:
form.action = "http://myform/option1";
document.getElementById('option_dates').name = "option1_dates";
break;
case 2:
form.action = "http://myform/option2";
document.getElementById('option_dates').name = "option2_dates";
break;
}
}
问题在于获取隐藏的元素: 1.在
表单上
我们不能使用getElementById()
需要使用文档
2.Id是变量,而不是字符串
function chgAction() {
var form = document.form;
console.log('chgAction()');
console.log(form.ddownOption.selectedIndex);
switch (form.ddownOption.selectedIndex) {
case 1:
form.action = "http://myform/option1";
document.getElementById('option_dates').name = "option1_dates";
break;
case 2:
form.action = "http://myform/option2";
document.getElementById('option_dates').name = "option2_dates";
break;
}
}
如果要更改表单操作,则在更改任何select值时都应该更改
<script>
// firt check select event fired
$("#ddownOption").on("change",function(e){
currentVal = $(this).val();
var url = "";
var optionName = "";
switch(currentVal){
case 1:
url = "http://myform/option1";
optionName = "option1_dates";
break;
case 2:
url = "http://myform/option2";
optionName = "option2_dates";
break;
default:
url = "http://myform/defaultOption";
optionName = "defaultoption_dates";
break;
}
$("#form").attr("href",url);
$("#option_dates").attr("name",optionName);
});
</script>
//首先,选中已触发的事件
$(“#ddownOption”)。关于(“更改”,函数(e){
currentVal=$(this.val();
var url=“”;
var optionName=“”;
开关(currentVal){
案例1:
url=”http://myform/option1";
optionName=“option1\u日期”;
打破
案例2:
url=”http://myform/option2";
optionName=“option2\u日期”;
打破
违约:
url=”http://myform/defaultOption";
optionName=“defaultoption\u日期”;
打破
}
$(“#表单”).attr(“href”,url);
$(“选项日期”).attr(“名称”,选项名称);
});
在代码选项中,日期不是一个值,而是一个名称,但没有单引号,javascript将其视为js值
所以把你的代码改成
document.getElementById('option_dates')。name=“you_value”代码>如果要更改表单操作,则在更改任何选择值时,该操作都应更改
<script>
// firt check select event fired
$("#ddownOption").on("change",function(e){
currentVal = $(this).val();
var url = "";
var optionName = "";
switch(currentVal){
case 1:
url = "http://myform/option1";
optionName = "option1_dates";
break;
case 2:
url = "http://myform/option2";
optionName = "option2_dates";
break;
default:
url = "http://myform/defaultOption";
optionName = "defaultoption_dates";
break;
}
$("#form").attr("href",url);
$("#option_dates").attr("name",optionName);
});
</script>
//首先,选中已触发的事件
$(“#ddownOption”)。关于(“更改”,函数(e){
currentVal=$(this.val();
var url=“”;
var optionName=“”;
开关(currentVal){
案例1:
url=”http://myform/option1";
optionName=“option1\u日期”;
打破
案例2:
url=”http://myform/option2";
optionName=“option2\u日期”;
打破
违约:
url=”http://myform/defaultOption";
optionName=“defaultoption\u日期”;
打破
}
$(“#表单”).attr(“href”,url);
$(“选项日期”).attr(“名称”,选项名称);
});
在代码选项中,日期不是一个值,而是一个名称,但没有单引号,javascript将其视为js值
所以把你的代码改成
document.getElementById('option_dates')。name=“you_value”代码>将隐藏的更改更改为以下内容
document.getElementById('option_dates').name = "option1_dates";
及
将“隐藏”的更改更改为以下内容
document.getElementById('option_dates').name = "option1_dates";
及
您使用表单而不是文档。它应该是“document.getElementById()”。您也没有将id值括在引号中
function chgAction() {
var form = document.form;
console.log('chgAction()');
console.log(form.ddownOption.selectedIndex);
switch (form.ddownOption.selectedIndex) {
case 1:
form.action = "http://myform/option1";
document.getElementById("option_dates").name = "option1_dates";
break;
case 2:
form.action = "http://myform/option2";
document.getElementById("option_dates").name = "option2_dates";
break;
}
}
您使用表单而不是文档。它应该是“document.getElementById()”。您也没有将id值括在引号中
function chgAction() {
var form = document.form;
console.log('chgAction()');
console.log(form.ddownOption.selectedIndex);
switch (form.ddownOption.selectedIndex) {
case 1:
form.action = "http://myform/option1";
document.getElementById("option_dates").name = "option1_dates";
break;
case 2:
form.action = "http://myform/option2";
document.getElementById("option_dates").name = "option2_dates";
break;
}
}
你可以发布你的html结构吗?添加的html结构在调用它的select之前是否包含js函数?看起来代码试图更改隐藏字段的name
,而不是value
。这是打字错误吗?是的,我在调用它的select之前包含js函数。你能发布你的html结构吗?添加的html结构你在调用它的select之前包含js函数吗?看起来代码试图更改隐藏字段的名称,而不是值。这是一个输入错误吗?是的,我在调用它的select之前包含了js函数是的,我的示例确实适用于表单操作,我还需要更改隐藏的输入名称!是的,我知道。。。我只告诉过你另一种做事情的方法,以及解决你生活中问题的方法code@MeenashJain我尝试了你的代码,但它没有做任何事情,没有给我正确的url或正确的选项。\u datesYes,我的示例对表单操作有效,我还需要更改隐藏的输入名称!是的,我知道。。。我只告诉过你另一种做事情的方法,以及解决你生活中问题的方法code@MeenashJain我尝试了你的代码,但它没有做任何事情,没有给我正确的url,也没有给我正确的选项_dates我按照你的建议进行了修改,但是#选项_dates名称没有被更改。我得到一个错误:传递给getElementById()的空字符串。var元素=document.getElementById(location.hash.substring(1));问题似乎出在location.hash.substring(1)
在getElementById()中传递什么?我通过向#option_dates hidden field name属性添加默认值来解决这个问题。感谢Ankit Chaudhary如果我不更改默认的选择选项,即案例0:我得到一个错误:“传递给getElementById()的空字符串”。我如何在上面的代码中设置默认值?我按照您的建议进行了修改,但#选项_日期名称没有更改。我得到一个错误:传递给getElementById()的空字符串。var元素=document.getElementById(location.hash.substring(1));问题似乎出在location.hash.substring(1)
您在getElementById()中传递了什么?我通过向#选项#添加一个默认值来解决这个问题