- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有 3 select
输入 form
, 代表日期。一个是日,一个是月,一个是年。
这些选择的选项是通过使用 javascript 添加的:例如,如果选择的年份可以被 4 整除并且月份是二月,那么一天中将有 29 天 selecet
否则只有 28 个。-这个有效,我不知道它是否与问题有关,所以我还是把它带来了。
现在,如果你想输入一个日期,你必须先从年月开始,这样代码就会知道要在一天中添加多少天 select
.
所以我用了asp.net
在这一天和每一天selecet
在月份之前被选择并且已经输入了年份有一个<td id="dateE">
变得可见,并在其中写入首先输入月份和年份。
问题是它不起作用 - 当您单击日期 select
时年月前select
没有任何反应 - 没有错误,网站也没有失败或任何事情。
这个选择有runat=server
和 autopostback=true
我试过onclick
与 onserverclick
与 onfocus
什么都没用。
这里是代码:
html:
<body onload ="addDate()">
<form id="form1" runat="server">
<table>
<tr><td>
Birth Date:
<br />
<select id="Day" name="Day" class="regis" style="width:109px" onfocus="Day_Click" runat="server" autopostback="true">
<option value="" selected="selected">Day</option>
</select>
/
<select id="Month" name="Month" class="regis" onchange="updateDay()" style="width:109px">
<option value="" selected="selected">Month</option>
</select>
/
<select id="Year" name="Year" class="regis" onchange="yearChanged()" style="width:109px">
<option value="" selected="selected" >Year</option>
</select>
</td>
<td class="un" id="dateE" runat="server"></td>
</tr>
</table>
</form>
</body>
CSS:
.un
{
display:none;
}
.feedback
{
border-top:1px solid black;
border-left:1px solid black;
vertical-align:bottom;
}
.regis
{
border: 1px solid rgba(190, 190, 190, 0.9);
background-color: #fff;
background: transparent;
height:25px;
}
JavaScript:
function addYear() {
var currentYear = new Date().getFullYear();
var legalWorkingAge = currentYear - 16;
var select = document.getElementById("Year");
for (var i = legalWorkingAge; i >= 1900; i--) {
var option = document.createElement('option');
option.text = option.value = i;
select.add(option, 0);
} //for
} //addYear
function addMonth() {
var select = document.getElementById("Month");
for (var i = 1; i <= 12; i++) {
var option = document.createElement('option');
option.text = option.value = i;
select.add(option, 0);
} //for
} //addMonth
function addDay(month) {
var select = document.getElementById("Day");
while (select.options.length != 1) {
select.options.remove(1);
}
var daynum;
switch (parseInt(month)) {
case 1: daynum = 31;
break;
case 2:
var year = document.getElementById("Year");
var selectedYear = year.options[year.selectedIndex].value;
if (parseInt(selectedYear) % 4 == 0)
daynum = 29;
else
daynum = 28;
break;
case 3: daynum = 31;
break;
case 4: daynum = 30;
break;
case 5: daynum = 31;
break;
case 6: daynum = 30;
break;
case 7: daynum = 31;
break;
case 8: daynum = 31;
break;
case 9: daynum = 30;
break;
case 10: daynum = 31;
break;
case 11: daynum = 30;
break;
case 12: daynum = 31;
break;
} //switch
for (var i = 1; i <= daynum; i++) {
var option = document.createElement('option');
option.text = option.value = i;
select.add(option, 0);
} //for
} //addDay
function addDate() {
addMonth();
addYear();
} //addDate
function updateDay() {
var month = document.getElementById("Month");
var selectedMonth = month.options[month.selectedIndex].value;
addDay(selectedMonth);
}
function yearChanged() {
var month = document.getElementById("Month");
var selectedMonth = month.options[month.selectedIndex].value;
if (selectedMonth != "")
updateDay()
}
asp.net:
public void Day_Click(object sender, EventArgs e)
{
this.dateE.InnerText = "Enter a Month and a Year First";
this.dateE.Attributes.Add("class", "feedback");
}
这让我发疯,我已经看了很多次问题出在哪里,但我就是找不到。
感谢帮助
最佳答案
您正在使用 HtmlControls
命名空间中的控件 - 这让一切都变得有点复杂。
首先,对于这些控件,您可能使用的大多数事件,如 onclick
、onfocus
等,与常规 HTML 标记一样是客户端的。因此,它们甚至不会触发对服务器的回发,更不用说验证和服务器端事件处理程序了。
不同的 HtmlControl
继承者定义了不同的服务器端事件,至少可以与服务器进行一些交互。其中一些根本没有任何东西,但是您使用的 select
有 OnServerChange定义。这是您唯一可以用来在服务器上跟踪控件发生了什么事情的方法。
当然,您仍然可以使用客户端,如 onfocus
或 onclick
,但这意味着编写客户端处理程序来手动触发回发。可能,但有点棘手。
另一个值得考虑的好选择是使用 asp:DropDownList
控件,它呈现为 select
,但在服务器上使用起来应该更方便。
最后,您尝试做的事情似乎更适合完全客户端解决方案。也就是说,您应该能够很容易地通过 javascript 控制对选择的可见性/访问。您是否考虑过这种方法?
关于javascript - 单击时选择 AutoPostBack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23152324/
SQLite、Content provider 和 Shared Preference 之间的所有已知区别。 但我想知道什么时候需要根据情况使用 SQLite 或 Content Provider 或
警告:我正在使用一个我无法完全控制的后端,所以我正在努力解决 Backbone 中的一些注意事项,这些注意事项可能在其他地方更好地解决......不幸的是,我别无选择,只能在这里处理它们! 所以,我的
我一整天都在挣扎。我的预输入搜索表达式与远程 json 数据完美配合。但是当我尝试使用相同的 json 数据作为预取数据时,建议为空。点击第一个标志后,我收到预定义消息“无法找到任何内容...”,结果
我正在制作一个模拟 NHL 选秀彩票的程序,其中屏幕右侧应该有一个 JTextField,并且在左侧绘制弹跳的选秀球。我创建了一个名为 Ball 的类,它实现了 Runnable,并在我的主 Draf
这个问题已经有答案了: How can I calculate a time span in Java and format the output? (18 个回答) 已关闭 9 年前。 这是我的代码
我有一个 ASP.NET Web API 应用程序在我的本地 IIS 实例上运行。 Web 应用程序配置有 CORS。我调用的 Web API 方法类似于: [POST("/API/{foo}/{ba
我将用户输入的时间和日期作为: DatePicker dp = (DatePicker) findViewById(R.id.datePicker); TimePicker tp = (TimePic
放宽“邻居”的标准是否足够,或者是否有其他标准行动可以采取? 最佳答案 如果所有相邻解决方案都是 Tabu,则听起来您的 Tabu 列表的大小太长或您的释放策略太严格。一个好的 Tabu 列表长度是
我正在阅读来自 cppreference 的代码示例: #include #include #include #include template void print_queue(T& q)
我快疯了,我试图理解工具提示的行为,但没有成功。 1. 第一个问题是当我尝试通过插件(按钮 1)在点击事件中使用它时 -> 如果您转到 Fiddle,您会在“内容”内看到该函数' 每次点击都会调用该属
我在功能组件中有以下代码: const [ folder, setFolder ] = useState([]); const folderData = useContext(FolderContex
我在使用预签名网址和 AFNetworking 3.0 从 S3 获取图像时遇到问题。我可以使用 NSMutableURLRequest 和 NSURLSession 获取图像,但是当我使用 AFHT
我正在使用 Oracle ojdbc 12 和 Java 8 处理 Oracle UCP 管理器的问题。当 UCP 池启动失败时,我希望关闭它创建的连接。 当池初始化期间遇到 ORA-02391:超过
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 9 年前。 Improve
引用这个plunker: https://plnkr.co/edit/GWsbdDWVvBYNMqyxzlLY?p=preview 我在 styles.css 文件和 src/app.ts 文件中指定
为什么我的条形这么细?我尝试将宽度设置为 1,它们变得非常厚。我不知道还能尝试什么。默认厚度为 0.8,这是应该的样子吗? import matplotlib.pyplot as plt import
当我编写时,查询按预期执行: SELECT id, day2.count - day1.count AS diff FROM day1 NATURAL JOIN day2; 但我真正想要的是右连接。当
我有以下时间数据: 0 08/01/16 13:07:46,335437 1 18/02/16 08:40:40,565575 2 14/01/16 22:2
一些背景知识 -我的 NodeJS 服务器在端口 3001 上运行,我的 React 应用程序在端口 3000 上运行。我在 React 应用程序 package.json 中设置了一个代理来代理对端
我面临着一个愚蠢的问题。我试图在我的 Angular 应用程序中延迟加载我的图像,我已经尝试过这个2: 但是他们都设置了 src attr 而不是 data-src,我在这里遗漏了什么吗?保留 d
我是一名优秀的程序员,十分优秀!