您好我试图在选择输入中添加与用户选择相对应的文本字段。理想情况下,如果用户选择值为" created_at"应在div内创建一个文本输入字段" search_input_div"这首先只是一个空的div。
*************编辑 - 我忘记提及的事情**********
" search_column_select" select由另一个按钮创建。因此,在加载页面时它不存在,我不确定这是否/如果这会影响功能。
*************编辑结束*****
出于某种原因,为什么我使用以下代码没有任何反应:
JS
$('#search_column_select').change(function(){
if($("#search_column_select").val() == 'created_at'){
$('#search_input_div').html("<input class='search_input' placeholder='(YYYY-MM-DD) or (YYYY-MM)'/>");
}
});
以防万一在这里是HTML:
HTML:
<div class="search_box" id="search_column_div">
<select id='search_column_select'>
<option value='select'>search by...</option>
<option value='created_at'>by date created</option>
<option value='street_address'>by street address</option>
</select>
</div>
<div id="search_input_div">
<!-- Search_input text field goes here -->
</div>
如果有人能够指出我哪里出错或如何解决这个问题,我将非常感激!谢谢!
答案 0 :(得分:1)
确保在文档准备好后添加javascript代码
$(function(){
$('#search_column_select').change(function(){
if($("#search_column_select").val() == 'created_at'){
$('#search_input_div').html("<input class='search_input' placeholder='(YYYY-MM-DD) or (YYYY-MM)'/>");
}
});
});
这样做是为了将jQuery事件添加到$(function(){...});
中,所以现在,当文档准备好并且search_column_select
存在时,您的javascript将被触发。
由于它是动态创建的,因此您必须在创建后添加change
侦听器或使用如下事件委托:
$(document).on('change', '#search_column_select', function(){
if($("#search_column_select").val() == 'created_at'){
$('#search_input_div').html("<input class='search_input' placeholder='(YYYY-MM-DD) or (YYYY-MM)'/>");
}
});
您还可以添加document
。
'#search_column_select'
答案 1 :(得分:1)
您必须将jQuery放入文档就绪函数中:
$( document ).ready(function() {
$('#search_column_select').change(function(){
if($("#search_column_select").val() == 'created_at'){
$('#search_input_div').html("<input class='search_input' placeholder='(YYYY-MM-DD) or (YYYY-MM)'/>");
}
});
});