用于调查的 Javascript:从页面加载时从出生日期开始计算年龄 从预填充信息加载
Javascript For Surveys: Calculating Age from Birth date on Page Load From Prefilled Info
我目前在我的一项 SurveyGizmo 调查中执行了以下 Javascript 操作。
其目的是计算某人指定其出生日期的确切年龄(按特定日期)。
但是,我们经常在调查中预先填充信息。问题是,当 dob 文本框中已经预填充了日期时,脚本不会触发。 有没有办法确保在加载页面以及更改文本框时年龄文本框更新?
感谢您提供的任何帮助/
$SG(document).ready(function(){
if ($SG('body').attr('id') != 'app') {
var textbox = $SG('#sgE-2604126-33-6-element'); //dob box
$tgtbox = $SG("#sgE-2604126-33-254-element"); //age box
$minage = 21; //minimum age
$errortxt = 'You must be at least ' + $minage + ' years old to continue';
textbox.change(function(){
console.log($SG(this).val());
var birth = $SG(this).val();
function getAge(birth) {
var d = new Date(2016,3,16);
var n = d.getTime();
console.log(n);
var c = Date.parse(birth);
console.log(c);
var a = (d - c) /(1000*60*60*24*365);
var result=(a*100)/100;
console.log(result);
$tgtbox.val(result);
//alert(result);
}
getAge(birth);
});
}
//submit validation
$('.sg-survey-form').submit(function(e){
if($tgtbox.val() < $minage) {
//alert($tgtbox.val());
//alert($minage);
$('.sg-error-message').text($errortxt).fadeIn('slow');
e.preventDefault();
}
}); //end submit validation
});
在文本框中发生更改事件之前,代码不会设置年龄显示。如果文本框中预加载了某些内容,则需要初始化年龄显示。
要初始化年龄显示,看起来您只需在加载时调用textbox.change
触发的代码一次。喜欢这个:
function setAge() {
console.log($SG(this).val());
var birth = $SG(this).val();
function getAge(birth) {
var d = new Date(2016,3,16);
var n = d.getTime();
console.log(n);
var c = Date.parse(birth);
console.log(c);
var a = (d - c) /(1000*60*60*24*365);
var result=(a*100)/100;
console.log(result);
$tgtbox.val(result);
//alert(result);
}
getAge(birth);
}
// run upon textbox change event
textbox.change(function() { setAge(); } );
// run right now
setAge();
或者这是没有不必要的位的代码片段:
function setAge() {
console.log($SG(this).val());
var birth = $SG(this).val();
var d = new Date(2016,3,16);
var n = d.getTime();
var c = Date.parse(birth);
var a = (d - c) /(1000*60*60*24*365);
var result=(a*100)/100;
$tgtbox.val(result);
}
// update age upon textbox change event
textbox.change(function() { setAge() } );
// update age right away
setAge();
看起来您必须通过定期运行检查功能来做到这一点。
下面是一些代码片段:
$.fn.allchange = function (callback) {
var me = this;
var last = "";
var infunc = function () {
var text = $(me).val();
if (text != last) {
last = text;
callback();
}
setTimeout(infunc, 100);
}
setTimeout(infunc, 100);
};
$("#myInput").allchange(function () {
alert("change!");
});
相关文章:
- 如何计算angular JS应用程序(单页应用程序)的页面加载时间
- Chrome 开发工具:如何计算加载弹出窗口并将其显示在页面上所需的总时间
- 正在计算页面上加载的所有资源
- 挖空映射:加载数据后,父模型中的计算可观察量不会更新
- 通过计算TTFB加载照明网页
- 使用jQuery加载文件,计算类的元素并设置间隔比率
- 记录未按时加载到组件中的计算属性
- 计算表中的行数(如果行是在 DOM 加载后创建的)
- 在没有javascript的情况下计算页面加载时间
- 用于调查的 Javascript:从页面加载时从出生日期开始计算年龄 从预填充信息加载
- 想要在加载窗口上计算字符数
- 页面加载时字符数不计算在内
- 可以计算使用 AJAX 加载了多少数据
- 如何在使用Javascript加载Chrome时计算图像
- 页面加载时默认计算金额为空
- 如何计算页面加载时间慢的决定因素
- 在将图像加载到页面上之前,如何使用jQuery计算图像的宽度和高度
- 如何计算已使用AJAX加载到页面的元素
- 影响Javascript加载的最终用户计算因素
- jquery mobile 1.3.1填充顶部在初始页面加载时计算错误