【问题标题】:How can i disable/enable form based on dropdown value如何根据下拉值禁用/启用表单
【发布时间】:2016-04-05 16:15:17
【问题描述】:

我在同一页面上有两个表单。我想根据第一个表单上选择的下拉值启用/禁用表单元素。

在第一个下拉下降时选项1选项1或<option value="">Select</option>我想从第一个表单或<select name="tractor" ..> 2nd形式表单上的所有内容禁用第二个下拉目。

如果来自 <select name="tire">Rear TireFront Tire 已选择,但在第二个下拉列表中未选择任何内容,我想启用 <select name="tractor"> 并保持 2nd Form 禁用。

第一形式

<form method="post">
<select name="tire">
    <option  value="">Select</option>
    <option  value="rear">Rear Tire</option>
    <option  value="front">Front Tire</option>
</select> 
 <select name="tractor">
    <option value="">select Type</option>
    <option value="2wd">2WD</option>
    <option value="mfwd">MFWD</option>
    <option value="4wd">4WD</option>
 </select>
 <input type="submit" value="Go" name="cmd_submit" />

2nd Form // 希望在页面加载时禁用

 <form method="post" id="vehicle" action="page.php">
      .
      .
      .
 </form>

【问题讨论】:

    标签: javascript php jquery html forms


    【解决方案1】:

    只需检查第一个下拉菜单的值。我在firstsecond 的下拉列表中添加了一些类:

    <h3> First form </h3>
    <form method="post" class="firstform">
      <select name="tire" class="first">
        <option  value="">Select</option>
        <option  value="rear">Rear Tire</option>
        <option  value="front">Front Tire</option>
      </select> 
      <select name="tractor" class="second" disabled>
        <option value="">select Type</option>
        <option value="2wd">2WD</option>
        <option value="mfwd">MFWD</option>
        <option value="4wd">4WD</option>
      </select>
      <input type="submit" value="Go" name="cmd_submit" />
    </form>
    
    <h3> Second form </h3>
    <form method="post" id="vehicle" action="page.php" class="secondform">
       <label>A form with no fields is useless: </label>
       <input type="text" placeholder="so here a field" class="secondformfield" />  <br />
       <label>This is a dropdown: </label>
       <select name="tractor" class="secondformfield">
        <option value="">...</option>
        <option value="2wd">With an option</option>
        <option value="mfwd">And another option</option>
       </select>  <br />
       <textarea class="secondformfield">some text</textarea>
       <input type="button" value="And away!" name="cmd_away" class="secondformfield"/> 
    </form>
    

    还有 Js

    $(document).ready(function(){
        $(".secondform .secondformfield").prop("disabled",true);
    
        $(".first").change(function(){
          if($(this).val() !== ""){
            $(".second").prop("disabled",false);
          }
          else{
            $(".second").prop("disabled",true);
          }
    
          checkIfEverythingIsFilledIn();
        });
    
        $(".second").change(function(){
          checkIfEverythingIsFilledIn();
        });
    
        function checkIfEverythingIsFilledIn(){
          if($(".first").val() !== "" && $(".second").val() !== ""){
            $(".secondform .secondformfield").prop("disabled",false);
            $(".secondform").attr("method","post").attr("action","page.php");
          }
          else{
            $(".secondform .secondformfield").prop("disabled",true);
            $(".secondform").removeAttr("method").removeAttr("action");
          }
        }
    });
    

    为了防止提交表单,有多种解决方案。提交按钮将被自动禁用,因为它也是input 类型。另一种选择是删除/添加表单的属性,就像我在上面所做的 and in a JsFiddle

    编辑:通过@WorldFS 的好建议更新了 js 代码

    【讨论】:

    • 根据 jQuery doc,应该使用 $().prop("disabled",true) 和 $().prop("disabled",false) 代替 .attr(),请参阅 @ 987654322@
    • 我怎样才能结束和禁用第二种形式`
      `?
    • 但是表单在同一个页面,不在不同的页面
    • 我知道这些表格是分开的。这会稍微改变解决方案,但我需要更多信息。你想在第二个表单上禁用什么?田野?提交按钮?两者都有?
    • 如果两个下拉菜单都启用了表单和整个元素!=""
    猜你喜欢
    • 1970-01-01
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    • 2020-01-15
    • 2017-04-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-30
    相关资源
    最近更新 更多