2016-07-06 57 views
0

必要和可选的输入我有一个接触的形式这样中隐藏的div

<form action="" method="POST"> 
 
<div> 
 
    <fieldset> 
 
    <p dir="rtl"> 
 
     <label>case1</label> 
 
     <select id="Color" required="required"> 
 
     <option value="">please select</option> 
 
     <option value="redd">sell</option> 
 
     <option value="greenn">rent</option> 
 
     </select> 
 
    </p> 
 
    </fieldset> 
 
</div> 
 
<div class="redd box"> 
 
    <input dir="rtl" type="text" name="pricerange" required /> 
 
    <input dir="rtl" type="text" name="room" /> 
 
</div> 
 
<div class="greenn box"> 
 
    <input dir="rtl" type="text" name="rentrange" required /> 
 
    <input dir="rtl" type="text" name="morgage" /> 
 
</div> 
 
<p dir="rtl"><input name="submit" type="submit" value="submit" /></p> 
 
</form>

正如你看到的我显示或隐藏2格箱“REDD箱”和“greenn箱”基于用户在表单的开头从下拉列表中选择的值。正如你所看到的,我在这个div盒里需要输入和可选的输入。但是当我选择其中一个div时,我必须填写必填字段和可选字段,否则我无法提交我的表单。任何想法?谢谢

$(document).ready(function(){ 
 
    $("#Color").change(function() { 
 
     $(this).find("option:selected").each(function(){ 
 
      if($(this).attr("value")=="redd"){ 
 
       $(".box").not(".redd").hide().find("input").prop("required", false); 
 
       $(".redd").show().find("input").prop("required", true); 
 
      } 
 
      else if($(this).attr("value")=="greenn"){ 
 
       $(".box").not(".greenn").hide().find("input").prop("required", false); 
 
       $(".greenn").show().find("input").prop("required", true); 
 
      } 
 
      else{ 
 
       $(".box").hide(); 
 
      } 
 
     }); 
 
    }).change(); 
 
});

+1

真的不清楚具体问题是什么。你已经显示了代码,但没有解释它是什么或没有正确地执行 – charlietfl

+0

显示的代码在这里很好地工作https://jsfiddle.net/81kLoc6t/ – charlietfl

+0

我添加了一个新的部分给我无法理解的问题,但我的一个两天前朋友告诉我。我希望你们中的一个人能够理解它 – Malekian

回答

1

终于我得到了答案,感谢所有发送他们的意见和答案给我的朋友。
的JavaScript必须是这样的变化:

$(document).ready(function(){ 
 
    $("#Color").change(function() { 
 
     $(this).find("option:selected").each(function(){ 
 
      if($(this).attr("value")=="redd"){ 
 
       $(".box").not(".redd").hide().find('input').removeAttr('required'); 
 
       $(".redd").show(); 
 
      } 
 
      else if($(this).attr("value")=="greenn"){ 
 
       $(".box").not(".greenn").hide().find('input').removeAttr('required'); 
 
       $(".greenn").show(); 
 
      } 
 
      else{ 
 
       $(".box").hide(); 
 
      } 
 
     }); 
 
    }).change(); 
 
});
此外,如果我们在div的一个选择选项上面javascrpt必须改变像波纹管

$(document).ready(function(){ 
 
    $("#Color").change(function() { 
 
     $(this).find("option:selected").each(function(){ 
 
      if($(this).attr("value")=="redd"){ 
 
       $(".box").not(".redd").hide().find('input,select').removeAttr('required'); 
 
       $(".redd").show(); 
 
      } 
 
      else if($(this).attr("value")=="greenn"){ 
 
       $(".box").not(".greenn").hide().find('input,select').removeAttr('required'); 
 
       $(".greenn").show(); 
 
      } 
 
      else{ 
 
       $(".box").hide(); 
 
      } 
 
     }); 
 
    }).change(); 
 
});

1

使用.removeAttr('required')而不是.prop('required', false)

+0

嗨,谢谢你的回答。我有一个问题:这部分怎么样 .prop(“required”,true) 我是不是要替换这个.removeAttr('required')呢? – Malekian

+1

我认为.prop('required',true)是可以的 –

+0

不,它不起作用,我必须填写必填字段和可选字段 – Malekian

0

设置required为false是不是所有的浏览器可以接受的(举个例子,Internet Explorer 8中不支持它)。您需要删除该属性。

$(".box").not(".redd").hide().find("input").removeAttr('required'); 

$(".box").not(".greenn").hide().find("input").removeAttr('required'); 

this链接,编辑详细信息

+0

属性和属性之间有区别。将属性设置为布尔值是完全正确的 – charlietfl

+0

@charlietfl,我没有明白你的意思。所以'required'是op需要删除的“属性”。 – Arashsoft

+0

我的观点是,该属性还设置了DOM元素的属性。因此,OP直接与财产一起工作是完全可以接受的。看看我发布的上面的演示链接。代码中显示的代码正常工作 – charlietfl

0

您可以使用.removeAttr('required')

试试这个:

$('form').on('submit',function(e){ 
     e.preventDefault() 
     // TODO 
     console.log('Form is submitted to the server'); 
    }); 

$("#Color").change(function() { 
     $(this).find("option:selected").each(function(){ 
      var val = $(this).attr("value"); 
      var box = $(".box"); 
      if(val=="redd"){ 
       box.not("." + val).hide().find("input").removeAttr('required'); 
       $("." + val).show().find("input").prop("required", true); 
      } 
     else if(val=="greenn"){ 
      box.not("." + val).hide().find("input").removeAttr('required'); 
      $("." + val).show().find("input").prop("required", true); 
     } 
     else{ 
      $(".box").hide(); 
     } 
    }); 
}).change(); 
+0

现在字段名称不正确 – charlietfl

+0

感谢您的关注:)但我认为这样做并不需要旧的字段名称。 –

+0

那么OP将不得不改变后端。这可能不是一种选择。他们显然有不同的名字 – charlietfl