2013-05-19 31 views
1

是否有可能编写一个JavaScript函数删除下拉时,它是空白的?使用Javascript或Jquery删除下拉时,它是空白

<form name="myform" method="post" enctype="multipart/form-data" action="" id="myform"> 
<div> 
<label id="question1">1) Draw recognizable shapes</label> 
     <br /> 
<input type="radio" value="Yes" id="question1_0" name="question1_0" /> 
     Yes 
<input type="radio" value="No" id="question1_1" name="question1_1" /> 
     No 
</div> 
<div> 
<label id="question2">2) Competently cut paper </label> 
     <br /> 
<input type="radio" value="Yes" id="question2_0" name="question2_0" /> 
     Yes 
<input type="radio" value="No" id="question2_1" name="question2_1" /> 
     No 
</div> 
<div> 
<label id="question3">3) Hold a pencil</label> 
     <br /> 
<input type="radio" value="Yes" id="question3_0" name="question3_0" /> 
     Yes 
<input type="radio" value="No" id="question3_1" name="question3_1" /> 
     No 
</div> 
<input type="submit" value="Delete Drop Down" onclick="return checkanddelete"/> 
</form> 

如果有人不选择问题2例如,它删除问题2标签和下拉。

+0

下拉的位置在哪里? – lifetimes

+0

假设他们意味着输入收音机的...但你想什么时候删除它们?在他们提交表单之前,或者在页面加载之前? – jammykam

回答

0

我不知道,你是什么意思下的“下拉菜单”,但在这里的一些信息,可以帮助你。 您可以为要删除的所有对象设置一个类名称。例如。

HTML

<div> 
    <label class='question2' id="question2">2) Competently cut paper </label> 
     <br /> 
    <input class='question2' type="radio" value="Yes" id="question2_0" name="question2_0" /> 
     Yes 
    <input class='question2' type="radio" value="No" id="question2_1" name="question2_1" /> 
     No 
</div> 

JS

$(".question2").remove(); 

作为另一种解决方案,你可以设置DIV标签的ID以上所有这些元素

<div id='block_to_remove'> 
    <label id="question2">2) Competently cut paper </label> 
     <br /> 
    <input type="radio" value="Yes" id="question2_0" name="question2_0" /> 
     Yes 
    <input type="radio" value="No" id="question2_1" name="question2_1" /> 
     No 
</div> 

,然后删除它的JS

$("#block_to_remove").remove(); 
2

假设你实际上意味着单选按钮组(而非下拉列表),那么首先你的HTML是不正确,你需要设置每个单选按钮组的name值是相同的:

<input type="radio" value="Yes" id="question1_0" name="question1" /> Yes 
<input type="radio" value="No" id="question1_1" name="question1" /> No 

然后,你需要遍历单选按钮的列表,如果没有一个组中选择,然后删除父div

$('input[type=submit]').on('click', function() { 
    var radioArr = []; 
    $(':radio').each(function(){ 
     var radName = this.name; 
     if($.inArray(radName, radioArr) < 0 && $(':radio[name='+radName+']:checked').length == 0) 
     { 
      radioArr.push(radName); 
      $(this).closest("div") 
        .remove(); 
     } 
    }); 
    return false; //to stop the form submitting for testing purposes 
}); 

当你在那里,你可能想周围添加文本一些<label for="">标签。

这里是jsFiddle of the solution

+0

太棒了。多谢。 – Alex

+0

我用额外的检查更新了代码,看看广播组是否已经被删除,以前它会发起删除命令两次(一次是,一次是否)。如果这回答你的问题不要忘记upvote和标记为答案:) – jammykam

0

如果您的下拉有下拉的ID,和你正在寻找隐藏在提交点击dropdon:

function checkanddelete() 
{ 
    if ($('#question2_0.=:checked, #question2_1:checked').length) 
     $('#dropdown').hide() // Or $('#dropdown').remove() if you do not plan on showing it again. 
    return false; // if you plan on not submitting the form.. 
} 

优化使用的模块中的一个页面包括添加适当的ID和类的div ,我假设完整代码在那里,但如果您打算进行UI调整,我会建议不要在混合中使用提交按钮。