【问题标题】:How to change the Input Name based on the dropdown selection in html form?如何根据 html 表单中的下拉选择更改输入名称?
【发布时间】:2015-04-21 02:21:05
【问题描述】:

我有一个 HTML 表单,它根据下拉选择更改其表单操作,但输入名称保持不变。

这是我的 HTML:

<form action="car.php" method="GET">
Select Your Option :
<select onChange="this.form.action=this.options[this.selectedIndex].value;">
      <option value='car.php'>Car Name</option>
      <option value='bike.php'>Bike Name</option>
      <option value='laptop.php'>Laptop Name</option>
      <option value='place.php'>Place Name</option>
      <option value='mobile.php'>Mobile Name</option>
    </select>
Enter your query                 // I want to change this also
<input id="Value" name="Value" type="text">
<button id="submit" type="submit" value="Submit">Submit Query</button>

如果我选择Car Name 并输入Maruti,那么值是这样传递的:

http://www.mywebsite.com/car.php?Value=Maruti

如果我选择Bike Name 并输入Honda 然后值是这样传递的:

http://www.mywebsite.com/bike.php?Value=Honda

我的问题是我必须在所有 5 个数据库中将该列命名为“值”,该数据库存储有关这一切的所有信息,这是我想避免的。

我想要,如果我选择 Car Name 并输入 Maruti 那么值应该像这样传递

http://www.mywebsite.com/car.php?car=Maruti

如果我选择Bike Name 并输入Honda 那么值应该像这样传递

http://www.mywebsite.com/bike.php?bike=Honda

为了实现这个目标应该对代码进行哪些更改?

如果这也能发生,那很好,否则没问题。

写成Enter your query。我希望在这里发生同样的变化。如果我选择汽车名称,那么它应该是Enter you car。如果我选择 Bike Name,那么它应该是 Enter your bike... 等等。

更新

我需要一点修改。选择汽车时,输入名称更改为汽车,表单操作更改为 car.php 并查询输入您的汽车。但是,如果我想像这样更改名称,那我该怎么办?当我选择任何说自行车时,表单操作将更改为bike.php,但我希望输入名称不同,例如USY并输入您的自行车以输入您​​的序列号。我该怎么办?

【问题讨论】:

    标签: javascript php html forms


    【解决方案1】:

    我现在已经更新了代码并得到了你的确切要求,我希望这会对你有所帮助

    <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.2.min.js"></script>
    
    
    <script type="text/javascript">
            $(document).ready(function(){
                $("select").change(function(){
                    var str=$(this).val(); // On Change get the option value
                    $("form").attr("action",str);
                    var res=str.split(".");
                    $("#input1").attr("name",res[0]);
                    $(".title").html("Enter your "+res[0]+" Name."); // Add this below  $("input").attr("name",res[0]); 
                    if(res[0]=='bike')
                    {
                        var title2="XYZ";
                        var title3="Serial No";                 
                    }
                    else if(res[0]=='laptop')
                    {
                        var title2="ABC";
                        var title3="Model No";                  
                    }
                    else if(res[0]=='place')
                    {
                        var title2="KLM";
                        var title3="Area";                  
                    }
                    else if(res[0]=='mobile')
                    {
                        var title2="FGH";
                        var title3="Brand";                 
                    }
                    $("#input2").attr("name",title2);
                    $("#input3").attr("name",title3);
                    $(".title2").html("Enter your "+title3);
    
                });             
            });         
        </script>
        <form action="car.php" method="GET">
    Select Your Option :
    <select value="car.php">
          <option value='car.php'>Car Name</option>
          <option value='bike.php'>Bike Name</option>
          <option value='laptop.php'>Laptop Name</option>
          <option value='place.php'>Place Name</option>
          <option value='mobile.php'>Mobile Name</option>
        </select>
    <span class="title2">Enter your Color</span> 
    <input name="WER" id="input2" type="text">
    <button id="submit" type="submit" value="Submit">Submit Query</button>
    </form>
    

    【讨论】:

    • 你没有理解我的问题...我不需要再输入2个字段...当我选择汽车...表单动作将是car.php,查询将是“输入您的颜色”,输入 ID 将是 WER,如果我给出绿色,那么 URL 将如下所示 mywebsite.com/car.php?WER=green,对于自行车.... form action bike.php,“输入您的序列号”,输入 ID将是 XYZ,因此如果输入 2002,则 URL 将如下所示 mywebsite.com/car.php?XYZ=2002 等等...
    • 你明白我的问题了吗?不懂的我再解释一遍……
    • 兄弟...您仍然没有理解我的问题...我不想要 2 个输入字段...例如,我什么时候会选择汽车。不应有“输入您的汽车名称”和“输入您的颜色”之类的两个输入字段。应该只有 1 个“输入您的颜色”。让我输入绿色然后 URL 应该看起来像这样 mywebsite.com/car.php?WER=green 因为在我的数据库中包含颜色的列名为 WER。
    • 哦,抱歉,已经单独删除了第二个输入框,我得到了答案,无意中放置了第二个输入框
    • 然后删除问题结束的第一个输入字段
    【解决方案2】:

    我建议您不要使用嵌入到 HTML 属性中的 JavaScript。除此之外,您可以在修改操作的同一 change 处理程序中更改名称属性。

    document.getElementById('Type').addEventListener('change', function(evt) {
      var type = this.selectedOptions[0].value;
      console.dir(this);
      document.getElementById('Value').setAttribute('name', type);
      document.getElementById('QueryName').textContent = type;
      this.form.action = type + ".php";
    });
    <form action="car.php" method="GET">
    Select Your Option :
    <select id="Type">
          <option value='car' selected>Car Name</option>
          <option value='bike'>Bike Name</option>
          <option value='laptop'>Laptop Name</option>
          <option value='place'>Place Name</option>
          <option value='mobile'>Mobile Name</option>
        </select>
    Enter your <span id="QueryName">car</span>
    <input id="Value" name="car" type="text">
    <button id="submit" type="submit" value="Submit">Submit Query</button>

    编辑:如果您希望一切都像 cmets 中所说的那样不同,您可以使用一个对象来保存这些值。例如,

    var setup = {
      car: {
        action: 'mycar.php',
        param: 'DFS',
        query: 'color'
      },
      ...
    };
    

    然后不是直接使用选项的值,而是根据所选选项从该对象中拉取。

    【讨论】:

    • 此代码无效。每次mywebsite.com/car.php 被选中...
    • 还有代码现在在做什么,你的代码也想做同样的事情。我想要达到的不存在!
    • 用inspector看看,其实car.php被选中是不对的(还有laptop.php,如果选中了Laptop Name的话)。此外,请注意name="car" 也会发生变化(例如,变为name="laptop")。我承认我忽略了“输入你的……”部分;我会在一分钟内修复它。
    • 感谢您的回答。您的代码正在根据我的问题运行.. 我需要的一点修改是.. 选择汽车时,输入名称更改为汽车,表单操作更改为 car.php 并查询输入您的汽车.. ..但是如果我想像这样更改名称,那我该怎么办....?当我选择任何说自行车时,表单操作将更改为bike.php,或者我可以将其从值字段更改为我想要的任何内容...我将根据文件进行更改...但我希望输入名称为不同的说 USY 并输入您的自行车以输入您​​的序列号...我该怎么办
    • 在您的代码中,您已更改输入名称、表单操作并输入您的 [查询] 相同的名称、汽车或自行车等......但我希望所有人都不同...就像选择汽车时,表单动作应该是mycar.php,输入名称应该是,DFS和查询应该是输入您的颜色等等......请帮助
    【解决方案3】:

    <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.2.min.js"></script>
    	<script type="text/javascript">
    		$(document).ready(function(){
    			$("select").change(function(){
    				var str=$(this).val(); // On Change get the option value
    				$("form").attr("action",str);
    				var res=str.split(".");
    				$("input").attr("name",res[0]);
    			});				
    		});			
    	</script>
    <!DOCTYPE html>
    <html>
    <head>
    	<title></title>
    	
    </head>
    <form action="car.php" method="GET">
    Select Your Option :
    <select value="car.php">
          <option value='car.php'>Car Name</option>
          <option value='bike.php'>Bike Name</option>
          <option value='laptop.php'>Laptop Name</option>
          <option value='place.php'>Place Name</option>
          <option value='mobile.php'>Mobile Name</option>
        </select>
    Enter your query                 // I want to change this also
    <input id="Value" name="car" type="text">
    <button id="submit" type="submit" value="Submit">Submit Query</button>
    </form>
    </html>

    我在这里使用了jquery,在html中做了一些改动,试试这个

    <form action="car.php" method="GET">
    Select Your Option :
    <select value="car.php">
          <option value='car.php'>Car Name</option>
          <option value='bike.php'>Bike Name</option>
          <option value='laptop.php'>Laptop Name</option>
          <option value='place.php'>Place Name</option>
          <option value='mobile.php'>Mobile Name</option>
        </select>
    Enter your query                 // I want to change this also
    <input id="Value" name="car" type="text">
    <button id="submit" type="submit" value="Submit">Submit Query</button>
    </form>
    

    对于 Jquery,你可以使用这个

    <script type="text/javascript">
            $(document).ready(function(){
                $("select").change(function(){
                    var str=$(this).val(); // On Change get the option value
                    $("form").attr("action",str);
                    var res=str.split(".");
                    $("input").attr("name",res[0]);
                });             
            });         
        </script>
    

    这对我来说非常适合享受:)

    【讨论】:

    • 您的代码不起作用。一切都传递给 car.php 并且所有选项的值都更改为 car。像这样如果我输入 3 然后mywebsite.com/car,php?car=3 用于所有选项
    • 输入你的查询仍然没有改变。我已经为问题添加了一些更新。请相应地更改代码....
    • $(".title").html("输入你的"+res[0]+"姓名。"); // 在下面添加 $("input").attr("name",res[0]);和 输入您的汽车名称
    • 我已经更新了这个问题,但你没有在你的代码中改变它!
    • 更新 我需要一点修改。选择汽车时,输入名称更改为汽车,表单操作更改为 car.php 并查询输入您的汽车。但是,如果我想像这样更改名称,那我该怎么办?当我选择任何东西说自行车时,表单动作将更改为bike.php,但我希望输入名称不同,比如USY并输入您的自行车以输入您​​的序列号。我该怎么办?
    猜你喜欢
    • 1970-01-01
    • 2018-12-04
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多