更改()在页面加载时触发

时间:2017-10-17 11:10:49

标签: javascript jquery uikit

快速背景: 我有一个项目,一些开发人员在几年前工作,他的代码是一个噩梦,更不用说几乎所有的软件都已过时。项目中的JQuery仍然是1.5.2但我能够使用JQuery的非冲突选项来解决这个问题。

但是,我仍然无法使change()函数正常工作 - 它在加载页面时触发。此外,由于某些奇怪的原因,On()函数也不起作用。

这是代码(正文下方):

jQuery_3_2_1(document).ready(function(){
jQuery_3_2_1("input[id^=DepartureDay]").on('change',alert('dd'));

这是非冲突功能(如果它是相关的):

<script type="text/javascript">
var jQuery_3_2_1 = $.noConflict(true);
</script>

我不知道它是否相关,但有关代码的有关事情是前一个程序员决定使用JS字符串加载所有HTML。我应该注意的另一件事是我正在尝试检测uikit datepicker值的变化。

感谢您的帮助!

我添加一个小提琴: https://jsfiddle.net/vzeuhohm/1/#&togetherjs=Sietj3k5oM 另一个编辑: https://jsfiddle.net/vzeuhohm/2/ 另一个编辑: 我附上完整的代码,希望有人能够理解它的错误 -

<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
    <head>
        <title>TODO supply a title</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">

<link rel="stylesheet" href="uikit.docs.min.css" type="text/css">
<script language="javascript" src="https://getuikit.com/v2/vendor/jquery.js"></script>
<script language="javascript" src="https://getuikit.com/v2/docs/js/uikit.min.js"></script>
<script language="javascript" src="https://getuikit.com/v2/src/js/components/datepicker.js"></script>

<link href="example160/css/jquery.autocomplete.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="example160/js/jquery-1.5.2.min.js"></script>
<script type="text/javascript" src="example160/js/jquery.autocomplete.js"></script>

        <script type="text/javascript" src="https://code.jquery.com/jquery-3.2.1.slim.js"></script>
<script type="text/javascript">
var jQuery_3_2_1 = $.noConflict(true);
</script>
        <script type="text/javascript">
jQuery_3_2_1(document).ready(function(){
    jQuery_3_2_1("[id^=DepartureDay]").ready(function(){
        jQuery_3_2_1("[id^=DepartureDay]").on('input',function(e){
            alert('ff');
        });
    });
});
        </script>
    </head>
    <body>
        <form method="post">
             <input type="text" name="DepartureDay1" id="DepartureDay1" data-uk-datepicker="{format:'DD.MM.YYYY'}" placeholder="mm/dd/yyyy" />
        </form>
        <div>TODO write content</div>
    </body>
</html>

3 个答案:

答案 0 :(得分:0)

请尝试使用

,而不是使用$(document).ready()
$(window).on('load', function() {
    $("input[id^=DepartureDay]").on('change',alert('dd');
});

修改

var jQuery_3_2_1 = $.noConflict(true);
jQuery_3_2_1(document).ready(function(){
    jQuery_3_2_1('[id^=DepartureDay]').on('input', function(){alert('dd');});
});

而不是.on('change'...,请使用.on('input'...)

您还必须说function(){alert('dd');}而不是alert('dd')

答案 1 :(得分:0)

您正在尝试使用调用var appPath = Assembly.GetEntryAssembly().Location; System.IO.Directory.SetCurrentDirectory(appPath); 结果作为更改处理程序。

您可能希望将警报包装在函数中,并将该函数作为处理程序传递:

alert('dd')

答案 2 :(得分:0)

尝试以下代码

  

文本框更改事件在文本框失去焦点之前不会触发。

这就是我发布这两个例子的原因

&#13;
&#13;
jQuery_3_2_1(document).ready(function(){
    jQuery_3_2_1("input[id^='DepartureDay']").on("change", function() {
      alert("your change event is working !!!");
    });      
});
jQuery_3_2_1("input[id^='DepartureDay2']").on('change keyup paste', function() {
    console.log('your change/keyup event is working !!!');
});
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.js">

</script>
<script type="text/javascript">
var jQuery_3_2_1 = $.noConflict(true);
</script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form method="post">
    <input type="text" name="DepartureDay" id="DepartureDay" />
    <input type="text" name="DepartureDay2" id="DepartureDay2" />
</form>
&#13;
&#13;
&#13;