在页面加载时流星改变形式值

时间:2017-02-17 15:19:22

标签: javascript jquery meteor

我正在尝试在加载页面时仅更改一些输入字段的值。例如,submit_date_year应该是当前年份,所以现在是2017年。

我的HTML

<template name="trip_html">

<table class="table table-striped table-condensed table-hover rsk-tbl vScrollTHead">
<tr>
      <td><input class="form-control input-lg" name="submit_date_day" type="text" placeholder="Day"/>  </td>
       <td><input class="form-control input-lg" name="submit_date_month" type="text" placeholder="Month"/>  </td>
        <td><input class="form-control input-lg" name="submit_date_year" type="text" placeholder="Year"/>  </td>
    </tr>
    </table>
</template>

我的JS

页面加载功能

Template.trip_html.rendered = function(event, template) {

     event.target.submit_date_year.value = 'test'; // DOES NOT WORK
      console.log('Template onLoad');

};

但是,由于某些原因,我无法在加载功能中使用event.target.submit_date_year ... 但是,一旦我点击“提交”按钮

,它就会在事件中起作用
Template.trip_html.events({
"submit .add-trip": function(event){
event.preventDefault();
var day = event.target.submit_date_day.value;
var month = event.target.submit_date_month.value;


var year = event.target.submit_date_year.value;

var car = event.target.submit_car.value;
var b = event.target.submit_b.value;
var a = event.target.submit_a.value;
var dist = event.target.submit_dist.value;

if(empty(day) || empty(month) || empty(year) || empty(car) || empty(b) || empty(a) || empty(dist)){
return false;
}

if(!isNumeric(day) || !isNumeric(month) || !isNumeric(year) || !isNumeric(dist)){
    return false;
}

if(day.startsWith("0"))
day = day.replace("0", "");

if(month.startsWith("0"))
month = month.replace("0", "");

if(year.startsWith("0"))
year = year.replace("0", "");

console.log(day, month, year, car, a, b, dist);
Meteor.call('addTrip', day, month, year, car, a, b, dist);

event.target.submit_a.value = event.target.submit_b.value;
event.target.submit_b.value = '';
event.target.submit_dist.value = '';


},

请帮忙!

2 个答案:

答案 0 :(得分:0)

它不起作用,因为您在onRendered Callback中传递了一个事件参数。因此,您无法通过event.target选择DOM元素。

尝试在标记中为元素指定某个类并替换行event.target.submit_date_year.value = 'test'; // DOES NOT WORK 有类似的东西:

$('.year-input').val() = 'test';

html行:

<td><input class="form-control input-lg year-input" name="submit_date_year" type="text" placeholder="Year"/></td>

您现在可以从渲染的回调中删除'event'参数。 希望,我可以帮忙。

答案 1 :(得分:0)

它无法正常工作的原因是您没有正确使用setlocal set ASPNETCORE_ENVIRONMENT=development yourbinary.exe endlocal 功能。您还尝试使用不存在的事件对象来访问输入,因为没有事件。

尝试:

onRendered

修改

如果您不需要动态数据,也可以使用HTML来实现此目的。

Template.trip_html.onRendered(function () {
  $('input[name="submit_date_year"]').val('2017');
});