2017-04-03 22 views
1

我簡單的反饋表上的工作,我有3個字段名稱,等級(差,一般,好)和反饋意見。如何設置單選按鈕隱藏在div

在我的形式我想用戶選擇一個等級的時間和與選定的評級&反饋意見提交表單。
我已經爲每個評級創建了<div>元素,並將它們設置爲無線電類型。
我不想在窗體上顯示單選按鈕,但我希​​望我的Div表現爲單選按鈕。

而且如何解決的div的邊界?
我附上截圖。

首先一個,我多麼希望它出現,第二個是我當前的代碼是如何出現在UI。

下面是我的表單代碼& CSS

<div id="modal_wrapper"> 
    <div id="modal_window"> 

    <div style="text-align: right;"><a id="modal_close" href="#">close <b>X</b></a></div> 

    <p><Strong>We'd love your feedback.</Strong><br></p> 

    <p>Your feedback will help us improve your experience. To protect your privacy, please do not enter personal or account information.</p> 

    <form id="modal_feedback" method="POST" action="#" accept-charset="UTF-8"> 
     Your Name :<br> 
     <input type="text" name="name" value=""><span></span><br> 
     <div class="feedbackCl" > 
     <input id="overall_0" name="overall" type="radio" value="1" tabindex="0" aria-describedby="o1-l"> 
     <label for="overall_0" class="labelClass">— —</label> 
     <span class="screen_reader" id="o1-l">Poor</span> 
     </div> 
     <div class="feedbackCl"> 
     <input id="overall_1" name="overall" type="radio" value="2" tabindex="0" aria-describedby="o2-l"> 
     <label for="overall_1" class="labelClass">—</label> 
     <span class="screen_reader" id="o2-l">Fair</span> 
     </div> 
     <div class="feedbackCl"> 
     <input id="overall_2" name="overall" type="radio" value="3" tabindex="0" aria-describedby="o3-l"> 
     <label for="overall_2" class="labelClass">+ —</label> 
     <span class="screen_reader" id="o3-l">Good</span> 
     </div> 
     <br> 
     <span><br></span><br> 
     <textarea style="overflow-x: hidden;" id="gBann" name="message" maxlength="1000" rows="4" cols="85" placeholder="How can we improve our site? Please share your suggestions." onKeyUp="toCount('gBann','uBann','{CHAR} characters left',1000);" > 
     </textarea><br> 
     <span id="uBann" class="minitext" style="text-align: right;">1000 characters left</span><br> 
     <input type="submit" name="feedbackForm" value="Submit"> 
    </form> 

    </div> 
</div> 

CSS代碼

.feedbackCl { 
    float: left; 
    box-sizing: border-box; 
    padding-top: 5px; 
    width: 9%; 
    text-align: center; 
    height: 40px; 
} 

input[type="radio" i] { 
    -webkit-appearance: radio; 
    box-sizing: border-box; 
} 

.labelClass{ 
    margin-right: 0 !important; 
    height: 28px; 
    background-color: #fff !important; 
    color: #0511ac; 
    box-sizing: border-box; 
} 

enter image description here Second image code

+0

「*我不希望顯示在表單上的單選按鈕,但我希​​望我的事業部表現爲單選按鈕*」。這是什麼意思?部分單選按鈕的「行爲」是用戶可以選擇一個且僅有一個選項。通過不顯示它,它不可能像「單選按鈕」那樣「表現」。如果我理解正確,您需要在按鈕上使用'display:none',並使用JavaScript將DIV連接到等效的單選按鈕選項。 –

+1

同樣,如果您要隱藏它們,爲什麼還要單選按鈕?如果您不想單選按鈕,只需使用圖像點擊事件來記錄評分。 – Bindrid

+0

你想得到一個幫助CSS div顯示像單選按鈕? (1 div同時出現,其他div將消失) – Anph

回答

2

你可以做類似如下:

$('.radio-group .feedbackCl').click(function(){ 
 
    $(this).parent().find('.feedbackCl').removeClass('selected'); 
 
    $(this).addClass('selected'); 
 
    var val = $(this).attr('data-value'); 
 
    $(this).parent().find('input').val(val); 
 
    console.log('You have selected: '+val); 
 
});
.feedbackCl { 
 
    display: inline-block; 
 
    width: 70px; 
 
    height: 30px; 
 
    border: 2px solid lightblue; 
 
    cursor: pointer; 
 
    margin: 2px 0; 
 
    text-align: center; 
 
    line-height: 30px; 
 
} 
 

 
.radio-group{ 
 
    position: relative; 
 
} 
 

 
.feedbackCl.selected{ 
 
    border-color: blue; 
 
    background-color: orange; 
 
} 
 
span{ 
 
    display: block; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="modal_wrapper"> 
 
    <div id="modal_window"> 
 

 
    <div style="text-align: right;"><a id="modal_close" href="#">close <b>X</b></a></div> 
 

 
    <p><Strong>We'd love your feedback.</Strong><br></p> 
 

 
    <p>Your feedback will help us improve your experience. To protect your privacy, please do not enter personal or account information.</p> 
 

 
    <form id="modal_feedback" method="POST" action="#" accept-charset="UTF-8"> 
 
    Your Name :<br> 
 
    <input type="text" name="name" value=""><span></span><br> 
 
    <div class="radio-group"> 
 
     <div class="feedbackCl" data-value="1">— — 
 
      <span>Poor</span> 
 
     </div> 
 
     <div class="feedbackCl" data-value="2">- 
 
      <span>Fair</span> 
 
     </div> 
 
     <div class="feedbackCl" data-value="3">+ — 
 
      <span>Good</span> 
 
     </div> 
 
     <div class="feedbackCl" data-value="4">+ 
 
      <span>Very good</span> 
 
     </div> 
 
    </div> 
 
    <br> 
 
    <span><br></span><br> 
 
    <textarea style="overflow-x: hidden;" id="gBann" name="message" maxlength="1000" rows="4" cols="85" placeholder="How can we improve our site? Please share your suggestions." onKeyUp="toCount('gBann','uBann','{CHAR} characters left',1000);" > 
 
    </textarea><br> 
 
    <span id="uBann" class="minitext" style="text-align: right;">1000 characters left</span><br> 
 
    </form> 
 

 
    </div> 
 
</div>

+0

感謝您的分享。這個解決方案也適用於我。 – MSV

0

而不是使用單選按鈕,您可以onClick事件添加到每個DIV哪些將填充隱藏的輸入。

<input type="text" name="name" value=""><span></span><br> 

<div class="feedbackCl" onclick="setRating(1)"> 
    <label for="overall_0" class="labelClass">- -</label> 
    <span class="screen_reader" id="o1-l">Poor</span> 
</div> 

<div class="feedbackCl" onclick="setRating(2)"> 
    <label for="overall_1" class="labelClass">-</label> 
    <span class="screen_reader" id="o2-l">Fair</span> 
</div> 

的Javascript

<script> 
    function setRating(v) { 
    document.getElementById('overall').value = v; 
    } 
</script> 
0

我想你想使用的無線電投入,因爲你不知道另一種方式來獲得只有一個表單字段來跟蹤提交。

在這裏,我使用了一個隱藏的輸入字段來存儲其格(差 - 公平 - 好)已被選定。像你想

而且申報單是很容易的風格。
;)

$(".feedbackCl").on("click",function(){ 
 
    $(".feedbackCl").removeClass("selected").css({"opacity":1});; 
 
    $(this).addClass("selected"); 
 
    $(".feedbackCl").not(".selected").css({"opacity":0.6}); 
 
    
 
    
 
    console.log("Value stored in the hidden input of the form: "+$(this).attr("id")); 
 
    $("#feedbackResult").val($(this).index()); 
 
});
.feedbackCl { 
 
    float: left; 
 
    box-sizing: border-box; 
 
    padding-top: 5px; 
 
    width: 9%; 
 
    text-align: center; 
 
    height: 40px; 
 
    border:1px solid grey; 
 
    display:block; 
 
} 
 
.feedbackCl.selected{ 
 
    border:2px solid blue; 
 
    
 
} 
 

 
#poor{ 
 
    background-color:red; 
 
} 
 
#fair{ 
 
    background-color:yellow; 
 
} 
 
#good{ 
 
    background-color:green; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div id="modal_wrapper"> 
 
    <div id="modal_window"> 
 

 
    <div style="text-align: right;"> 
 
     <a id="modal_close" href="#">close <b>X</b></a> 
 
    </div> 
 

 
    <p><Strong>We'd love your feedback.</Strong><br></p> 
 

 
    <p>Your feedback will help us improve your experience. To protect your privacy, please do not enter personal or account information.</p> 
 

 
    <form id="modal_feedback" method="POST" action="#" accept-charset="UTF-8"> 
 
     Your Name :<br> 
 
     <input type="text" name="name" value=""><span></span><br> 
 
     <br> 
 
     <div class="feedbackCl" id="poor"> 
 
     Poor 
 
     </div> 
 
     <div class="feedbackCl" id="fair"> 
 
     Fair 
 
     </div> 
 
     <div class="feedbackCl" id="good"> 
 
     Good 
 
     </div> 
 
     <input type="hidden" id="feedbackResult" name="feedbackResult"> 
 
     <br> 
 
     <br> 
 
     <br> 
 
     
 
     <textarea id="gBann" name="message" maxlength="1000" rows="4" cols="85" placeholder="How can we improve our site? Please share your suggestions." onKeyUp="toCount('gBann','uBann','{CHAR} characters left',1000);" ></textarea><br> 
 
     <span id="uBann" class="minitext" style="text-align: right;">1000 characters left</span><br> 
 
     <br> 
 
     <input type="submit" name="feedbackForm" value="Submit"> 
 
    </form> 
 
    <br> 
 
    </div> 
 
</div>

1

試試我的片段!我不使用任何js代碼,只需html和css!希望這可以幫到你!

.feedback{float:left;width:100%;margin-top:10px} 
 
.feedbackCl{float:left;width:15%} 
 
.feedbackCl>input[type="radio"]{display:none} 
 
.feedbackCl>input[type="radio"]:checked+label>.sight{border:solid 2px #00f;background:orange} 
 
.feedbackCl>label{width:100%;height:100%;display:inline-block;text-align:center} 
 
.feedbackCl>label>.sight{width:100%;float:left;border:solid 1px #ccc;padding:10px 0;color:#00f;margin-left:1px} 
 
.feedbackCl>label>.screen_reader{width:100%;float:left;padding-top:10px}
<!DOCTYPE html> 
 
<html> 
 
<head> 
 
    <meta charset="utf-8"> 
 
    <meta name="viewport" content="width=device-width"> 
 
    <title>JS Bin</title> 
 
</head> 
 
<body> 
 
<div id="modal_wrapper"> 
 
    <div id="modal_window"> 
 

 
    <div style="text-align: right;"><a id="modal_close" href="#">close <b>X</b></a></div> 
 

 
    <p><Strong>We'd love your feedback.</Strong><br></p> 
 

 
    <p>Your feedback will help us improve your experience. To protect your privacy, please do not enter personal or account information.</p> 
 

 
    <form id="modal_feedback" method="POST" action="#" accept-charset="UTF-8"> 
 
     Your Name :<br> 
 
     <input type="text" name="name" value=""><span></span><br> 
 
     <div class="feedback"> 
 
     <div class="feedbackCl" > 
 
     <input id="overall_0" name="overall" type="radio" value="1" tabindex="0" aria-describedby="o1-l"> 
 
     <label for="overall_0" class="labelClass"> 
 
      <span class="sight">— —</span> 
 
      <span class="screen_reader" id="o1-l">Poor</span> 
 
     </label> 
 
     </div> 
 
     <div class="feedbackCl"> 
 
     <input id="overall_1" name="overall" type="radio" value="2" tabindex="0" aria-describedby="o2-l"> 
 
     <label for="overall_1" class="labelClass"> 
 
      <span class="sight">—</span> 
 
      <span class="screen_reader" id="o2-l">Fair</span> 
 
     </label> 
 
     
 
     </div> 
 
     <div class="feedbackCl"> 
 
     <input id="overall_2" name="overall" type="radio" value="3" tabindex="0" aria-describedby="o3-l"> 
 
     <label for="overall_2" class="labelClass"> 
 
      <span class="sight">+—</span> 
 
      <span class="screen_reader" id="o3-l">Good</span> 
 
     </label> 
 
     </div> 
 
     <div class="feedbackCl"> 
 
     <input id="overall_3" name="overall" type="radio" value="3" tabindex="0" aria-describedby="o3-l"> 
 
     <label for="overall_3" class="labelClass"> 
 
      <span class="sight">+</span> 
 
      <span class="screen_reader" id="o3-l">Very Good</span> 
 
     </label> 
 
     </div> 
 
     </div> 
 
     <br> 
 
     <span><br></span><br> 
 
     <textarea style="overflow-x: hidden;" id="gBann" name="message" maxlength="1000" rows="4" cols="85" placeholder="How can we improve our site? Please share your suggestions." onKeyUp="toCount('gBann','uBann','{CHAR} characters left',1000);" > 
 
     </textarea><br> 
 
     <span id="uBann" class="minitext" style="text-align: right;">1000 characters left</span><br> 
 
     <input type="submit" name="feedbackForm" value="Submit"> 
 
    </form> 
 

 
    </div> 
 
</div> 
 
</body> 
 
</html>

+0

感謝您分享此內容。這對我有效。 – MSV

+0

我的榮幸! :) – Anph