Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Html表单:基于客户端上的其他控件定义控件值的最简单方法_Javascript_Jquery_Html - Fatal编程技术网

Javascript Html表单:基于客户端上的其他控件定义控件值的最简单方法

Javascript Html表单:基于客户端上的其他控件定义控件值的最简单方法,javascript,jquery,html,Javascript,Jquery,Html,单击submit按钮时,我希望将表单中的年龄而不是出生年份发送到服务器。最简单的方法是什么 <form action="process.php"> <input type="text" name="yearBorn"> <input type="hidden" name="Age"> <input type="submit" > </form> 建议的服务器端计算能否解决问题/您是否需要最终的JavaScrip

单击submit按钮时,我希望将表单中的年龄而不是出生年份发送到服务器。最简单的方法是什么

<form action="process.php">
    <input type="text" name="yearBorn">
    <input type="hidden" name="Age">
    <input type="submit" >
</form>

建议的服务器端计算能否解决问题/您是否需要最终的JavaScript解决方案

$age = $date("Y") - $_POST[yearBorn];

这是你的选择,按我个人的喜好排列

服务器 在服务器上处理此问题。我知道你不喜欢这个解决方案,但是如果禁用了JavaScript怎么办?唯一有意义的情况是,当您不控制服务器时,例如提交到其他站点的页面

这也是一种安全风险。我可以很容易地发送一个假帖子,说我的出生年份是2042年,我是39239岁,出于某种原因,这可能会导致你的应用程序崩溃,特别是如果你试图将它存储在一个16位有符号整数中

MVC、MVVM等。 使用一些可以定义数据和视图之间链接的解决方案。这里有一个KnockoutJS示例,而有些人更喜欢主干或AngularJS

<input type="text" name="yearBorn" data-bind="value: yearBorn">
<input type="hidden" name="Age" data-bind="value: 2013 - parseInt(yearBorn())">
它也可以被触发

$('input[name=yearBorn]').val('1993').change(); // sets Age to 20
问问他们的年龄 也许值得考虑,但这是你的应用。

不是基于捕获yearBorn事件的Javascript/解决方案?这是我能想到的唯一解决方案:

$('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
        }
    });
});

在服务器端进行计算。另外,仅仅是年份是非常不准确的。大多数人都知道自己的年龄。既然你放弃了年份,为什么不直接问一下年龄呢?我编辑了这个问题,让它更清楚。这段代码是我遇到的一个复杂问题的示例。具体来说,我想知道当浏览器访问年龄字段的值时是否有任何覆盖。我不是noob:好吧,到目前为止你有什么进展?我需要一个javascript/jquery解决方案,它不基于从中捕获事件yearBorn@shishirgarg-不使用出生年份,你如何计算年龄?@Derek朕會功夫 我想访问yearBorn的值,但不想访问它的事件。@shirsigarg-它的事件是什么意思?由onChange等输入元素公开的事件
$('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
        }
    });
});