我知道有人问过类似的问题,但我还没有找到解决方案。
我有一个 sample fiddle使用我已知的一些年、月和日作为样本。我希望 div id 能够根据所选年份的值等动态填充,而不是每年手动添加选择选项 div。
我有来 self 的数据库(php、mysql、cakephp 1.3)的所有下拉选项值。第一个下拉列表包含已输入报告的唯一年份。一旦选择(onchange),第二个下拉列表将只给出为该选定年份输入报告的唯一月份,然后一旦选择了月份(onchange),第三个下拉列表将填充每天输入报告的日期。报告从 2011 年 8 月开始,此后不再每月或每天输入。
需要我的 ajax 帮助 将第一个下拉列表中的选定选项发布到我的 Controller ,然后根据发布的值从新查询中获取第二个下拉选项到数据库(模型)。假设用户从第一个下拉列表中选择 2013 年,然后 ajax 将变量中的“2013”发送到我的 Controller , Controller 将值发送到我的模型,我的模型查询数据库以获取 2013 年输入报告的不同月份。由于这一年还没有结束,因此应该出现的月份只有一月到七月。这些填充了我的月份下拉列表,用户在示例中选择了五月。 Ajax 将 May 或“05”发送到 Controller -> 模型,模型查询数据库以获取 2013 年 5 月的唯一日期。这将填充我的第三个下拉列表。我将有一个隐藏的输入字段,它将是从下拉列表中以这种格式选择的所有值:MM/DD/YYYY。当用户提交时,这会将用户重定向到该日期的报告页面并显示当天输入的所有记录。
感谢您的帮助...
<select name="drop_1" id="drop_1">
<option value="" selected="selected" disabled="disabled">Choose Year</option>
<option value="">Select Year</option>
<option value="2011">2011</option>
<option value="2012">2012</option>
<option value="2013">2013</option>
</select>
<select name="drop_2" id="drop_2">
<option value="" selected="selected" disabled="disabled">Choose Month</option>
<option value=""></option>
<option value="01">January</option>
<option value="02">February</option>
<option value="03">March</option>
<option value="04">April</option>
<option value="05">May</option>
<option value="06">June</option>
<option value="07">July</option>
</select>
<select name="drop_3" id="drop_3">
<option value="" selected="selected" disabled="disabled">Choose Day</option>
<option value=""></option>
<option value="05/11/2013">05/11/2013</option>
<option value="05/12/2013">05/12/2013</option>
<option value="05/13/2013">05/13/2013</option>
</select>
-- 这是我的 jQuery,但它不起作用...$.get 需要从我的模型中获取值,索引只是 iframes 我页面的新迭代。
$(document).ready(function() {
$('#wait_1').hide();
$('#drop_1').change(function(){
$('#wait_1').show();
$('#result_1').hide();
$.get("index", {
func: "drop_1",
drop_var: $('#drop_1').val()
}, function(response){
$('#result_1').fadeOut();
setTimeout("finishAjax('result_1', '"+escape(response)+"')", 400);
});
return false;
});
});
function finishAjax(id, response) {
$('#wait_1').hide();
$('#'+id).html(unescape(response));
$('#'+id).fadeIn();
}
function finishAjax_tier_three(id, response) {
$('#wait_2').hide();
$('#'+id).html(unescape(response));
$('#'+id).fadeIn();
}
-- 这是我从 View 中摘录的实际表单,cakephp 1.3 中的“索引”
<div>
<!-- Begin Date Selection -->
<form name="udate" action="/reports/daily/" method="post">
<?php
echo "<select id='drop_1' name='drop_1' title='Use the drop list'>";
echo '<option value="" disabled="disabled" selected="selected">'."Choose Year".'</option>';
foreach ($years as $select_year)
{
echo '<option value="', $select_year[0]["Year(dated)"], '">', $select_year[0]["Year(dated)"], '</option>';
}
echo "</select>";?>
<?php
echo "<select name='drop_2' id='drop_2' title='Use the drop list'>";
echo '<option value="" disabled="disabled" selected="selected">'."Choose Month".'</option>';
foreach ($months as $select_month)
{
echo '<option value="', $select_month[0]["Month(dated)"], '">', $select_month[0]["Month(dated)"], '</option>';
}
echo "</select>";
echo "<script type=\"text/javascript\">
$('#wait_2').hide();
$('#drop_2').change(function(){
$('#wait_2').show();
$('#result_2').hide();
$.get(\"index\", {
func: \"drop_2\",
drop_var: $('#drop_2').val()
}, function(response){
$('#result_2').fadeOut();
setTimeout(\"finishAjax_tier_three('result_2', '\"+escape(response)+\"')\", 400);
});
return false;
});
</script>";?>
<?php
echo "<select id='drop_3' name='drop_3' title='Use the drop list'>";
echo '<option value="" disabled="disabled" selected="selected">'."Choose Day".'</option>';
foreach ($days as $select_item)
{
echo '<option value="', $select_item[0]["Days(dated)], '">', $select_item[0]["Days(dated)], '</option>';
}
echo "</select>";?>
<span id="wait_1" style="display: none;">
<img alt="Please Wait" src="http://dev.asi.calpoly.edu/img/ajax-loader.gif"/>
</span>
<span id="result_1" style="display: none;"></span>
<span id="wait_2" style="display: none;">
<img alt="Please Wait" src="http://dev.asi.calpoly.edu/img/ajax-loader.gif"/>
</span>
<span id="result_2" style="display: none;"></span>
<?php echo $form->submit('Submit') ?>
</form>
</div><!-- End Date Selection -->
最佳答案
你应该做的是:
将更改事件附加到每个下拉列表 - 或至少前两个。
在发生更改事件时,对服务器进行 AJAX 调用(传递一些参数)并使用服务器返回的内容重新填充下一个选择框。这里的“技巧”是您必须独自考虑如何传递参数(GET、POST)以及如何创建选择框 HTML。
AJAX 调用完成并返回数据后,您需要填充下一个选择。在这里,您可以让服务器为选择发送准备好的 HTML,或者获取数据并构建标记客户端。预呈现发送的 HTML 应该更好。
对下一个下拉菜单重复该过程。
关于php - 根据之前的下拉选择动态填充最多 3 个下拉菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16679492/
我试图获取一个长度在1到10之间的字符串,并输出将字符串分解为大小为1、2或3的连续子字符串的所有可能方式。例如:输入:123456将整数分割成单个字符,然后继续查找组合。该代码将返回以下所有数组。[1,2,3,4,5,6][12,3,4,5,6][1,23,4,5,6][1,2,34,5,6][1,2,3,45,6][1,2,3,4,56][12,34,5,6][12,3,45,6][12,3,4,56][1,23,45,6][1,2,34,56][1,23,4,56][12,34,56][123,4,5,6][1,234,5,6][1,2,345,6][1,2,3,456][123
我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%
我有一个服务模型/表及其注册表。在表单中,我几乎拥有服务的所有字段,但我想在验证服务对象之前自动设置其中一些值。示例:--服务Controller#创建Action:defcreate@service=Service.new@service_form=ServiceFormObject.new(@service)@service_form.validate(params[:service_form_object])and@service_form.saverespond_with(@service_form,location:admin_services_path)end在验证@ser
我有一个用户工厂。我希望默认情况下确认用户。但是鉴于unconfirmed特征,我不希望它们被确认。虽然我有一个基于实现细节而不是抽象的工作实现,但我想知道如何正确地做到这一点。factory:userdoafter(:create)do|user,evaluator|#unwantedimplementationdetailshereunlessFactoryGirl.factories[:user].defined_traits.map(&:name).include?(:unconfirmed)user.confirm!endendtrait:unconfirmeddoenden
我有一个驼峰式字符串,例如:JustAString。我想按照以下规则形成长度为4的字符串:抓取所有大写字母;如果超过4个大写字母,只保留前4个;如果少于4个大写字母,则将最后大写字母后的字母大写并添加字母,直到长度变为4。以下是可能发生的3种情况:ThisIsMyString将产生TIMS(大写字母);ThisIsOneVeryLongString将产生TIOV(前4个大写字母);MyString将生成MSTR(大写字母+tr大写)。我设法用这个片段解决了前两种情况:str.scan(/[A-Z]/).first(4).join但是,我不太确定如何最好地修改上面的代码片段以处理最后一种
状态:我正在构建一个应用程序,其中需要一个可供用户选择颜色的字段,该字段将包含RGB颜色代码字符串。我已经测试了一个看起来很漂亮但效果不佳的。它是“挑剔的颜色”,并托管在此存储库中:https://github.com/Astorsoft/picky-color.在这里我打开一个关于它的一些问题的问题。问题:请建议我在Rails3应用程序中使用一些颜色选择器。 最佳答案 也许页面上的列表jQueryUIDevelopment:ColorPicker为您提供开箱即用的产品。原因是jQuery现在包含在Rails3应用程序中,因此使用基
我有一个使用SeleniumWebdriver和Nokogiri的Ruby应用程序。我想选择一个类,然后对于那个类对应的每个div,我想根据div的内容执行一个Action。例如,我正在解析以下页面:https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=puppies这是一个搜索结果页面,我正在寻找描述中包含“Adoption”一词的第一个结果。因此机器人应该寻找带有className:"result"的div,对于每个检查它的.descriptiondiv是否包含单词“adoption
我正在我的Rails项目中安装Grape以构建RESTfulAPI。现在一些端点的操作需要身份验证,而另一些则不需要身份验证。例如,我有users端点,看起来像这样:moduleBackendmoduleV1classUsers现在如您所见,除了password/forget之外的所有操作都需要用户登录/验证。创建一个新的端点也没有意义,比如passwords并且只是删除password/forget从逻辑上讲,这个端点应该与用户资源。问题是Grapebefore过滤器没有像except,only这样的选项,我可以在其中说对某些操作应用过滤器。您通常如何干净利落地处理这种情况?
在我做的一些网络开发中,我有多个操作开始,比如对外部API的GET请求,我希望它们同时开始,因为一个不依赖另一个的结果。我希望事情能够在后台运行。我找到了concurrent-rubylibrary这似乎运作良好。通过将其混合到您创建的类中,该类的方法具有在后台线程上运行的异步版本。这导致我编写如下代码,其中FirstAsyncWorker和SecondAsyncWorker是我编写的类,我在其中混合了Concurrent::Async模块,并编写了一个名为“work”的方法来发送HTTP请求:defindexop1_result=FirstAsyncWorker.new.async.
我需要根据字符串路径的长度将字符串路径数组转换为符号、哈希和数组的数组给定以下数组:array=["info","services","about/company","about/history/part1","about/history/part2"]我想生成以下输出,对不同级别进行分组,根据级别的结构混合使用符号和对象。产生以下输出:[:info,:services,about:[:company,history:[:part1,:part2]]]#altsyntax[:info,:services,{:about=>[:company,{:history=>[:part1,:pa