4

在将在线表单输入提交并存储到数据库之前,我需要一些帮助来预处理它们。这个表单实际上是在 Joomla 3.1 中的 ChronoForms 组件的帮助下完成的。该表单是使用 HTML 制作的,处理是使用 JQuery/JavaScript 使用“OnLoad”事件中的“Load JS”操作完成的(对于那些熟悉 ChronoForms 的人)。

简化形式如下:

<form name="online_form" id="online_form">
    <select name="period_year" id="period_year">
        <option value="1">1</option>
        <option value="2">2</option>
    </select>
    <select name="period_month" id="period_month">
        <option value="1">1</option>
        <option value="2">2</option>
    </select>
    <input type="hidden" name="period" id="period"/>
    <input type="submit" id="submit_form"/>
</form>

我想要做的是当用户提交表单时, period_year 和 period_month 的值组合成一个文本字符串“x 年和 y 月”,并作为期间的值。数据库最终将只存储 period 而不是 period_year 和 period_month。

我尝试在提交表单时使用事件侦听器,但它似乎不起作用:

window.addEvent('domready', function() {
    $('online_form').addEventListener('submit', 
        function() { 
            var period_year = $('period_year').value;
            var period_month = $('period_month').value;
            $('period').value=period_year+' year and '+period_month+' months';
        }
    );
}

另一种选择是在 select 元素上使用 onchange 属性,如下所示,但它似乎对我也不起作用:

....
<select name="period_year" id="period_year" onchange="process()">...</select>
<select name="period_month" id="period_month" onchange="process()">...</select>
....

对于头部:

function process() {
    $('period').value=period_year+' year and '+period_month+' months';
};

我做错了什么?或者还有其他正确的方法吗?

4

2 回答 2

3

需要#选择带有 id 的元素

$('#online_form').submit(function() {   
//-^---here
     $('#period').val(period_year+' year and '+period_month+' months');
     //-^---here

)};
于 2013-05-17T06:46:23.843 回答
1

您需要#用于ID 选择器(“#id”)也更改valueval(). 值与DOM对象一起使用,选择器将返回jQuery对象。如果你想使用 value 然后使用[0]indexer 将 jQuery 对象转换为 DOM 对象。

$('#online_form').addEventListener('submit', 
    function() { 
        $('#period').val(period_year+' year and '+period_month+' months');
        //$('period')[0].value=period_year+' year and '+period_month+' months';
    }
);
于 2013-05-17T06:45:05.973 回答