2017-07-06 52 views
1

編輯: 我知道它們是jQuery,CSS和HTML中的一個問號。由於它是Yii自動生成的,我無法刪除它。將CSS應用於標籤和輸入元素使用jQuery中的值

使用jQuery我試圖添加和刪除我的HTML中的inputlabel樣式。我拿到的時候我想這個沒有反應,我相信這是由於異常for=""和/或val=值被Yii產生的元素。

似乎無法得到它與if else語句工作。當被移除時,它應用CSS。

它應該做如下;選擇是,值爲「是」,然後出現第二個標籤和輸入。

我創建了一個CodePen這與作爲的jsfiddle我有問題。 https://codepen.io/CallumRocks/pen/rwrrvE

我也包括下面的相關代碼。

$(document).ready(function(){ 
 
    $('#event_Do_you_require_any_accessibility_assistance?').on('change',function(){ 
 
    if($(this).val() == 'Yes'){ 
 
     $("label[for='event_Please specify']").css('display', 'block'); 
 
     $("input#event_Please_specify").css('display', 'block'); 
 
    } 
 
    else { 
 
     $("label[for='event_Please specify']").css('display', 'none'); 
 
     $("#event_Please_specify").css('display', 'none'); 
 
    } 
 
    }); 
 
});
label[for="event_Would you like to stay informed about updates and changes to this event?"] { 
 
    width: 100% !important; 
 
    line-height: 20px; 
 
} 
 
label[for="event_Please specify"] { 
 
    display: none; 
 
} 
 
input#event_Please_specify{ 
 
    display: none; 
 
}
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> 
 
<div class="form-group"> 
 
    <label class="required-label required" for="event_Do you require any accessibility assistance?">Do you require any accessibility assistance? <span class="required">*</span></label> 
 
    <select class="form-control user-success" required="required" name="event_Do you require any accessibility assistance?" id="event_Do_you_require_any_accessibility_assistance?"> 
 
    <option value="">Please choose</option> 
 
    <option value="Yes">Yes</option> 
 
    <option value="No"> No</option> 
 
    </select> 
 
</div> 
 

 
<div class="form-group"> 
 
    <label for="event_Please specify">Please specify</label> 
 
    <input class="col-md-5 form-control" placeholder="Please specify" autocomplete="off" type="text" value="" name="event_Please specify" id="event_Please_specify"> 
 
</div>

+0

刪除?從ID – Durga

+0

@Durga我已經試過了,無濟於事。 –

+0

您已經編輯了您的問題,以便您的jQuery選擇器ID不再與您的元素ID匹配,因此您現在將獲得指出該問題的答案。這就是說,我提供了一個可以與'?'配合使用的解決方案。 – Santi

回答

4

您不必刪除?。簡單地逃逸使用\\它jQuery中:

$('#event_Do_you_require_any_accessibility_assistance\\?') 

​​


實施例:

$(document).ready(function(){ 
 
    $('#event_Do_you_require_any_accessibility_assistance\\?').on('change',function(){ 
 
    if($(this).val() == 'Yes'){ 
 
     $("label[for='event_Please specify']").css('display', 'block'); 
 
     $("input#event_Please_specify").css('display', 'block'); 
 
    } 
 
    else { 
 
     $("label[for='event_Please specify']").css('display', 'none'); 
 
     $("#event_Please_specify").css('display', 'none'); 
 
    } 
 
    }); 
 
});
label[for="event_Would you like to stay informed about updates and changes to this event?"] { 
 
    width: 100% !important; 
 
    line-height: 20px; 
 
} 
 
label[for="event_Please specify"] { 
 
    display: none; 
 
} 
 
input#event_Please_specify{ 
 
    display: none; 
 
}
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> 
 
<div class="form-group"> 
 
    <label class="required-label required" for="event_Do you require any accessibility assistance?">Do you require any accessibility assistance? <span class="required">*</span></label> 
 
    <select class="form-control user-success" required="required" name="event_Do you require any accessibility assistance?" id="event_Do_you_require_any_accessibility_assistance?"> 
 
    <option value="">Please choose</option> 
 
    <option value="Yes">Yes</option> 
 
    <option value="No"> No</option> 
 
    </select> 
 
</div> 
 

 
<div class="form-group"> 
 
    <label for="event_Please specify">Please specify</label> 
 
    <input class="col-md-5 form-control" placeholder="Please specify" autocomplete="off" type="text" value="" name="event_Please specify" id="event_Please_specify"> 
 
</div>

0

錯字在選擇 '身份證'。只需刪除問號。 $('#event_Do_you_require_any_accessibility_assistance?')

在您的codepen代碼中,如果您在HTML select id中刪除問號,則一切正常。

2

如果您不想刪除或轉義'?'您的帳號,你可以選擇jQuery的 '開始與選擇' 這樣的:

$("[id^='event_Do_you_require_any_accessibility_assistance']") 

$(document).ready(function(){ 
 
    $("[id^='event_Do_you_require_any_accessibility_assistance']").on('change',function(){ 
 
    debugger; 
 
    if($(this).val() == 'Yes'){ 
 
     $("label[for='event_Please specify']").css('display', 'block'); 
 
     $("input#event_Please_specify").css('display', 'block'); 
 
    } 
 
    else { 
 
     $("label[for='event_Please specify']").css('display', 'none'); 
 
     $("#event_Please_specify").css('display', 'none'); 
 
    } 
 
    }); 
 
});
label[for="event_Would you like to stay informed about updates and changes to this event?"] { 
 
    width: 100% !important; 
 
    line-height: 20px; 
 
} 
 
label[for="event_Please specify"] { 
 
    display: none; 
 
} 
 
input#event_Please_specify{ 
 
    display: none; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> 
 
<div class="form-group"> 
 
    <label class="required-label required" for="event_Do you require any accessibility assistance?">Do you require any accessibility assistance? <span class="required">*</span></label> 
 
    <select class="form-control user-success" required="required" name="event_Do you require any accessibility assistance?" id="event_Do_you_require_any_accessibility_assistance?"> 
 
    <option value="">Please choose</option> 
 
    <option value="Yes">Yes</option> 
 
    <option value="No"> No</option> 
 
    </select> 
 
</div> 
 

 
<div class="form-group"> 
 
    <label for="event_Please specify">Please specify</label> 
 
    <input class="col-md-5 form-control" placeholder="Please specify" autocomplete="off" type="text" value="" name="event_Please specify" id="event_Please_specify"> 
 
</div>

+0

這肯定會起作用,不過值得注意的是可以考慮[性能影響](https://jsperf.com/jquery-selectors-8513)。對於這樣一個案例,我不認爲這是一個問題,但需要思考! – Santi

+0

你說的很好,因爲在運行測試後,它顯示'id屬性以選擇器開始'比'class selector'慢76%(假設類和id選擇器的性能差不多)。在這種情況下,它不會有太大的區別,但如果情況擴大,那76%將會形成一個不同的世界。 –

相關問題