Html表单:基于客户端上的其他控件来定义控件值的最简单方法
Html form: easiest way to define value of control based on other controls on client side
单击提交按钮时,我想将表单中出生的年龄而不是年份发送到服务器。实现它最简单的方法是什么?
<form action="process.php">
<input type="text" name="yearBorn">
<input type="hidden" name="Age">
<input type="submit" >
</form>
以下是您的选项,按我个人的喜好排序。
服务器
在服务器上处理此问题。我知道你不喜欢这个解决方案,但如果禁用了JavaScript怎么办?唯一有意义的情况是,当你不控制服务器时(例如,提交到其他网站的页面)。
这也是一个安全风险。我可以很容易地发送一个虚假的POST,说我的出生年份是2042,我今年39239岁,出于某种原因,这可能会导致你的应用程序崩溃,尤其是如果你试图将其存储在16位带符号整数中。
MVC、MVVM等
使用一些解决方案可以定义数据和视图之间的链接。这里有一个KnockoutJS的例子,而有些人更喜欢Backbone或AngularJS。
<input type="text" name="yearBorn" data-bind="value: yearBorn">
<input type="hidden" name="Age" data-bind="value: 2013 - parseInt(yearBorn())">
在变更处理程序中处理它(比blur
更可靠)
$('input[name=yearBorn]').change(function(){
$('input[name=Age]').val(2013 - parseInt($(this).val()));
});
它也可以被触发。
$('input[name=yearBorn]').val('1993').change(); // sets Age to 20
询问他们的年龄
也许值得考虑,但这是你的应用程序。
"不是基于从yearBorn
捕获事件的Javascript/jQuery解决方案"?这是我唯一能想到的解决方案:
$('form').submit(function (e) {
// Prevents the form from being submitted
e.preventDefault();
// Find outs the age
var age = new Date().getFullYear() - $('input[name="yearBorn"]').val();
// Submits the form through AJAX, so in server-side you can get the age
$.ajax({
type: 'POST',
url: 'process.php',
data: {'age': age},
success: function (data) {
// If successful, do your stuff here
}
});
});
服务器端计算是否能解决问题/是否需要一个明确的JavaScript解决方案?
$age = $date("Y") - $_POST[yearBorn];
会成功的。
相关文章:
- 在angularjs中创建自定义控件的推荐方法
- 自定义控件中的双向绑定在SAPUI5中不起作用
- 向ASP控件添加自定义事件
- 自定义HTML5视频控件-退出按钮不会启动全屏切换功能
- LoadControl HttpCompileException自定义服务器控件JavaScript错误
- 如何使用ngModel将自定义控件的提供程序扩展器分离到Angular 2中的单独文件中
- Google Maps Javascript v3 自定义控件子类化标准控件
- 在带有 bootbox 的自定义对话框中添加选项以选择表单控件.js在 ASP.NET MVC 中
- 优化自定义控件的脚本
- 从谷歌地图自定义控件打开离子模态时遇到问题
- 如何确定控件/插件是否从 CRM 2011 中功能区上的自定义按钮触发
- ASP.net自定义控件,下拉值必须在服务器端填充,所选值在返回时丢失
- 在Javascript中创建自定义的可重用控件(Kendo UI)
- 具有自动定时动画和控件的自定义滑块
- HTML5自定义视频控件
- 从自定义用户控件更新contenttemplate下页面中控件的id
- UpdatePanel中自定义控件内的动态javascript
- 操作无法使用自定义控件上的呈现属性集,该控件包含操作按钮
- TextBox自定义Web控件和JavaScript客户端验证
- 从 JQuery 添加 asp.net 自定义用户控件