Javascript 选择“更改时工作不正常”

Javascript 选择“更改时工作不正常”,javascript,jquery,Javascript,Jquery,我有一个select选项,它调用一个需要在更改时触发的函数。但现在它是在页面加载和更改时触发的。见下文: $(function () { $('select[id^="iZondagbegin_"]').on('change', uren("Zondag")); $('select[id^="iZondageinde_"]').on('change', uren("Zondag")); $('select[id^="iMaandagBegin_"]').on('change', uren("M

我有一个select选项,它调用一个需要在更改时触发的函数。但现在它是在页面加载和更改时触发的。见下文:

$(function () {

$('select[id^="iZondagbegin_"]').on('change', uren("Zondag"));
$('select[id^="iZondageinde_"]').on('change', uren("Zondag"));
$('select[id^="iMaandagBegin_"]').on('change', uren("Maandag"));
$('select[id^="iMaandageinde_"]').on('change', uren("Maandag"));
$('select[id^="iDinsdagbegin_"]').on('change', uren("Dinsdag"));
$('select[id^="iDinsdageinde_"]').on('change', uren("Dinsdag"));
$('select[id^="iWoensdagbegin_"]').on('change', uren("Woensdag"));
$('select[id^="iWoensdageinde_"]').on('change', uren("Woensdag"));
$('select[id^="iDonderdagbegin_"]').on('change', uren("Donderdag"));
$('select[id^="iDonderdageinde_"]').on('change', uren("Donderdag"));
$('select[id^="iVrijdagbegin_"]').on('change', uren("Vrijdag"));
$('select[id^="iVrijdageinde_"]').on('change', uren("Vrijdag"));
$('select[id^="iZaterdagbegin_"]').on('change', uren("Zaterdag"));
$('select[id^="iZaterdageinde_"]').on('change', uren("Zaterdag"));

function uren(dag) {


    var vandaag = datumvandaag();
    var pauze = ($('[title="Pauze"]').val());
    var error;

    $('input[id^="i' + dag + '_"]').val("");

    //get values
    var tijdStart = ($('select[id^="i' + dag + 'begin_"]').val());
    var uurStartControle = +($('select[id^="i' + dag + 'begin_"]').val());
    tijdStart += ":" + ($('select[id^="i' + dag + 'begin_"]').filter("[id$='_$DateTimeFieldDateMinutes']").val());
    var minutenStartControle = +($('select[id^="i' + dag +'begin_"]').filter("[id$='_$DateTimeFieldDateMinutes']").val());

    //var datezondagstart = new Date(vandaag + tijdstart + ":00");

    var tijdStop = ($('select[id^="i' + dag + 'einde_"]').val());
    var uurStopControle = +($('select[id^="i' + dag + 'einde_"]').val());
    tijdStop += ":" + ($('select[id^="i' + dag + 'einde_"]').filter("[id$='_$DateTimeFieldDateMinutes']").val());
    var minutenStopControle = +($('select[id^="i' + dag + 'einde_"]').filter("[id$='_$DateTimeFieldDateMinutes']").val());

    if (uurStartControle >= uurStopControle && minutenStartControle >= minutenStopControle || uurStopControle <= uurStartControle) {
        alert("Tijd is ongeldig!");
        error = 1;

    }

    if (error != 1) {
        var totaleTijd = tijdsverschil(tijdStart, tijdStop, pauze);
        if (totaleTijd != '00:00') {
            $('input[id^="i' + dag + 'uren_"]').val(totaleTijd);
        }
        else{
            alert("Tijd is ongeldig!");
        }
    }
}

});
$(函数(){
$('select[id^=“izondagbeagin”]”)。在('change',uren(“Zondag”);
$('select[id^=“iZondageinde_quo;])。on('change',uren(“Zondag”);
$('select[id^=“iMaandagBegin_”]”)。on('change',uren('Maandag');
$('select[id^=“iMaandageinde_uquo;])。on('change',uren('Maandag');
$('select[id^=“idisdagbegin_uquo;])。on('change',uren(“Dinsdag”);
$('select[id^=“idisdageinde_quo;])。on('change',uren(“Dinsdag”);
$('select[id^=“iwoensdagbeagin”]”)。on('change',uren(“Woensdag”);
$('select[id^=“iWoensdageinde_quo;]).on('change',uren(“Woensdag”);
$('select[id^=“idunderdagbeagin”]”)。在('change',uren(“Donderdag”);
$('select[id^=“idunderdageinde_uquo;])。on('change',uren(“Donderdag”);
$('select[id^=“ivrijdaggbegin”]”)。on('change',uren(“Vrijdag”);
$('select[id^=“iVrijdageinde_quo;]).on('change',uren(“Vrijdag”);
$('select[id^=“izaterdagbeagin_”]”)。在('change',uren(“Zaterdag”);
$('select[id^=“iZaterdageinde_uquo;])。on('change',uren(“Zaterdag”);
功能uren(dag){
var vandaag=datumvandaag();
var pauze=($('[title=“pauze”]').val();
var误差;
$('input[id^=“i'+dag+'']')val(“”);
//获取价值
var tijdStart=($)('select[id^=“i'+dag+'begin_']).val();
var uurStartControle=+($('select[id^=“i'+dag+'begin_']).val());
tijdStart+=“:”+($('select[id^=“i'+dag+'begin\']).filter(“[id$=''.$datetimefieldminutes']).val());
var minutenStartControle=+($('select[id^=“i'+dag+'begin']).filter(“[id$=''.$datetimefieldminutes']).val());
//var datezondagstart=新日期(vandaag+tijdstart+“:00”);
var tijdStop=($('select[id^=“i'+dag+'einde_']).val());
var uurStopControle=+($('select[id^=“i'+dag+'einde_']).val());
tijdStop+=“:”+($('select[id^=“i'+dag+'einde'])过滤器(“[id$=”\u$datetimefieldminutes']).val());
var minutenStopControle=+($('select[id^=“i'+dag+'einde'])。filter(“[id$=”'''u$datetimefieldddateminutes'])。val());

如果(uurStartControle>=uurStopControle&&minutenStartControle>=minutenStopControle | | uurStopControle请更改所有行,如:

$('select[id^="iZondagbegin_"]').on('change', uren("Zondag"));
$('select[id^="iZondagbegin_"]').on('change', uren("Zondag"));
致:

以及:

或者更好的方法是,在所有select元素上使用一个公共类,
.myclass
并用一条语句进行绑定

$('select.myclass').on('change', uren);
.....
<select id="iZondagbegin_...." data-value="Zondag" class="myclass">.....</select>
.....
function uren() {
     var value = $(this).data('value');
     //.....
}
$('select.myclass')。在('change',uren');
.....
.....
.....
函数uren(){
var值=$(this.data('value');
//.....
}

当您传递这样的参数或提供
()
时,该函数将立即被调用。您不希望这样。

当前,当您使用
uren(“Zondag”)时,您正在调用
uren
函数
。您应该使用匿名函数作为事件处理程序,并调用
uren
函数

像这样使用它

致:

我建议您使用
data-*
属性来存储需要传递给更改事件处理程序的内容

例子: HTML,这里添加了一个cooom类mySelect


已经有两个答案指出了您的问题;另一个解决方案是让jQuery使用
$处理上下文

$('select[id^="iZondagbegin_"]').on('change', $.proxy(uren, null, "Zondag");

仍然需要通过论证。首先,您应该重构此代码和逻辑,以使用更通用的方法。非常感谢您的帮助!
$('select.myclass').on('change', uren);
.....
<select id="iZondagbegin_...." data-value="Zondag" class="myclass">.....</select>
.....
function uren() {
     var value = $(this).data('value');
     //.....
}
$('select[id^="iZondagbegin_"]').on('change', uren("Zondag"));
$('select[id^="iZondagbegin_"]').on('change', function () {
    uren("Zondag");
});
<select class="mySelect" id="iZondagbegin_1" data-value="Zondag"> .... </select>
<select class="mySelect" id="iMaandagBegin_" data-value="Maandag"> .... </select>
$('.mySelect').on('change', function () {
    uren($(this).data('value'));
});
$('select[id^="iZondagbegin_"]').on('change', $.proxy(uren, null, "Zondag");