快速背景: 我有一个项目,一些开发人员在几年前工作,他的代码是一个噩梦,更不用说几乎所有的软件都已过时。项目中的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>
答案 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)
尝试以下代码
文本框更改事件在文本框失去焦点之前不会触发。
这就是我发布这两个例子的原因
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;